要求:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
示例:
输入:[1,2,3,4,5]
输出:[1,3,5,2,4]
代码:
def reOrder(arrayList):
l = 0
r = len(arrayList) - 1
while l < r:
print('l = {} , r = {}'.format(l , r))
while l < r and arrayList[l] % 2 == 1:
l += 1
while l < r and arrayList[r] % 2 == 0:
r -= 1
mid = arrayList[l]
arrayList[l] = arrayList[r]
arrayList[r] = mid
return arrayList
-------------------------------------------------------------------
输入一个链表,输出该链表中倒数第 k 个结点。
注意: k >= 1; 如果 k 大于链表长度,则返回 NULL;
例如:
输入:链表:1->2->3->4->5 ,k=2 输出:4
两个指针,快指针先走k-1步,然后两个一起走,快指针走到尾节点时,慢指针在倒数第k个节点。 需考虑k=0时和fast已经走到尾节点的情况。
代码:
def getKthFromEnd(head , k):
fast = slow = head
for _ in range(k):
if not fast:
return None
fast = fast.next
while fast:
slow , fast = slow.next , fast.next
return slow