@@ -403,8 +403,7 @@ def is_palindrome(x):
403
403
for index in range (len (str (x )) // 2 ):
404
404
if ((x // (pow (10 , index ))) % 10 ) != ((x // (pow (10 , len (str (x )) - index - 1 ))) % 10 ):
405
405
return False
406
- if index == (len (str (x )) // 2 ) - 1 :
407
- return True
406
+ return True
408
407
409
408
410
409
print ('\n #9. Palindrome Number:' )
@@ -607,6 +606,17 @@ def remove_element_best(nums, val):
607
606
print (remove_element_best (remove_element_best_nums , test_remove_element_val ))
608
607
609
608
609
+ # 28. Implement strStr()
610
+ def str_str (haystack , needle ):
611
+ pass
612
+
613
+
614
+ str_str_haystack = 'cabac'
615
+ str_str_needle = 'aba'
616
+ print ('\n #28.Implement strStr():' )
617
+ print (str_str (str_str_haystack , str_str_needle ))
618
+
619
+
610
620
# 31. Next Permutation
611
621
# 1, 2, 3 --> 1, 3, 2
612
622
# 3, 2, 1 --> 1, 2, 3
@@ -1253,9 +1263,12 @@ def merge1(nums1, m, nums2, n):
1253
1263
merge_m = 3
1254
1264
merge_n = 1
1255
1265
merge1 (merge_nums1 , merge_m , merge_nums2 , merge_n )
1266
+ # print(get_insert_index(merge_nums, 6))
1256
1267
1257
1268
1258
- # print(get_insert_index(merge_nums, 6))
1269
+ # 92. Reverse Linked List II
1270
+ print ('\n #92. Reverse Linked List II:' )
1271
+ print ('See Leetcode' )
1259
1272
1260
1273
1261
1274
# 95. Unique Binary Search Trees II
@@ -1491,10 +1504,31 @@ def is_palindrome(s):
1491
1504
return True
1492
1505
1493
1506
1507
+ def is_palindrome_better (s ):
1508
+ length = len (s )
1509
+ if length <= 1 :
1510
+ return True
1511
+ low = 0
1512
+ high = length - 1
1513
+ while low <= high :
1514
+ if not s [low ].isalnum ():
1515
+ low += 1
1516
+ elif not s [high ].isalnum ():
1517
+ high -= 1
1518
+ else :
1519
+ if s [low ].lower () != s [high ].lower ():
1520
+ return False
1521
+ else :
1522
+ low += 1
1523
+ high -= 1
1524
+ return True
1525
+
1526
+
1494
1527
print ('\n #125. Valid Palindrome:' )
1495
- # is_palindrome_s = "A man, a plan, a canal: Panama"
1496
- is_palindrome_s = "race a car"
1528
+ is_palindrome_s = "A man, a plan, a canal: Panama"
1529
+ # is_palindrome_s = "race a car"
1497
1530
print (is_palindrome (is_palindrome_s ))
1531
+ print (is_palindrome_better (is_palindrome_s ))
1498
1532
1499
1533
1500
1534
# 134. Gas Station
@@ -2146,10 +2180,20 @@ def __init__(self, x):
2146
2180
2147
2181
2148
2182
def reverse_list (head ):
2149
- return head
2183
+ if not head :
2184
+ return None
2185
+ curr = head
2186
+ prev = None
2187
+ while curr :
2188
+ next_node = curr .next
2189
+ curr .next = prev
2190
+ prev = curr
2191
+ curr = next_node
2192
+ return prev
2150
2193
2151
2194
2152
2195
print ('\n #206. Reverse Linked List:' )
2196
+ print ('Done' )
2153
2197
2154
2198
2155
2199
# 213. House Robber II
@@ -3019,6 +3063,45 @@ def power_of_three(n):
3019
3063
print (power_of_three (test_power_of_three ))
3020
3064
3021
3065
3066
+ # 334. Increasing Triplet Subsequence
3067
+ # arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1
3068
+ # [1, 2, 3, 4, 5] --> True
3069
+ # [5, 4, 3, 2, 1] --> False
3070
+ def increasing_triplet (nums ):
3071
+ if not nums :
3072
+ return False
3073
+ length = len (nums )
3074
+ if length <= 2 :
3075
+ return False
3076
+ low = 0
3077
+ high = length - 1
3078
+ for i in range (length ):
3079
+ if nums [i ] <= nums [low ]:
3080
+ low = i
3081
+ else :
3082
+ break
3083
+ for j in range (length - 1 , - 1 , - 1 ):
3084
+ if nums [j ] >= nums [high ]:
3085
+ high = j
3086
+ else :
3087
+ break
3088
+ if low >= high :
3089
+ return False
3090
+ for k in range (low + 1 , high ):
3091
+ if nums [low ] <= nums [k ] <= nums [high ]:
3092
+ return True
3093
+ return False
3094
+
3095
+
3096
+ # increasing_triplet_nums = [0, 1, 2, 3, 4]
3097
+ # increasing_triplet_nums = [1, 5, 0, 3]
3098
+ # increasing_triplet_nums = [5, 4, 5, 2, 1]
3099
+ increasing_triplet_nums = [1 , 2 , - 10 , - 8 , - 7 ]
3100
+ print ('\n #334. Increasing Triplet Subsequence:' )
3101
+ print (increasing_triplet (increasing_triplet_nums ))
3102
+ print ('not done' )
3103
+
3104
+
3022
3105
# 338. Counting Bits
3023
3106
# num = 0 or 1 or 2 or 3 or ...
3024
3107
# For every numbers i in the range 0<=i<=num,
0 commit comments