按奇偶排序数组
直接法——使用一个临时数组,第一遍查找将所有偶数复制到新数组的前部分,第二遍查找并复制所有奇数到数组的后部分。
我的方法——写的好乱,梳理一下。
就是先找出数组的最后一个偶数,才这里开始奇偶交换。如果交换的是奇数和奇数,那就指针不动,继续交换,直到奇偶交换,再把指针挪动到下一个。
def sortArrayByParity(self, nums):
q = 0
end = 0
n = len(nums)
for i in range(n):
if nums[i] % 2 == 0:
end = i
while q <= end and end >= 0:
if nums[q] % 2 != 0:
tmp = nums[q]
nums[q] = nums[end]
nums[end] = tmp
end -= 1
if nums[q] % 2 == 0:
q += 1
else:
q += 1
return nums
轮转数组专题
轮转数组
我的想法是新建一个一样的数组,然后一一放进去
需要改进
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: None Do not return anything, modify nums in-place instead.
"""
n = len(nums)
list1 = [nums[i] for i in range(n)]
print(list1)
slow = fast = 0
fast = (fast + k) % n
i = 0
while fast < n:
nums[fast] = list1[slow]
slow += 1
fast += 1
while slow < n:
nums[i] = list1[slow]
i += 1
slow += 1
return nums
数组区间专题
汇总区间
自己写的代码需要整理一下,看看能不能缩减
老师的方法
map(函数,序列)会一次将序列中的值代入函数。
def summaryRanges(self, nums):
n=len(nums)
res=[]
slow=fast=0
while fast<n:
if fast<n-1 and nums[fast+1] == nums[fast]+1:
fast+=1
else:
res.append((nums[slow],nums[fast]))
slow=fast+1
fast=fast+1
def p(x):
slow,fast=x
if slow==fast:
return str(slow)
else :
return str(slow)+'->'+str(fast)
#map(函数,序列)会一次将序列中的值代入函数。
return list(map(p,res))
拓展——寻找缺失的区间
想法就参照汇总区间,但是还需要看它给的指定区间。zifu
def findMissingRanges(self, nums, lower, upper):
n = len(nums)
res = []
if n == 0:
res.append([lower, upper])
return res
slow = fast = 0
if nums[slow] > lower:
res.append([lower, nums[slow] - 1])
while fast < n:
if fast < n - 1 and nums[fast + 1] != nums[fast] + 1:
slow = fast
fast += 1
res.append([nums[slow] + 1, nums[fast] - 1])
else:
fast += 1
if nums[fast - 1] < upper:
res.append([nums[fast - 1] + 1, upper])
return res
字符串替换空格问题
实现一个函数,将一个字符串中的每个空格替换成“%20”
方法一
def replaceSpace(self,s):
res=[]
for c in s:
if c==" ":
res.append("%20")
else:
res.append(c)
#str.join(sequence)
return "".join(res)
方法二
def replaceSpace(self,s):
counter=s.count(' ')
res=list(s)
#list.extend(seq)
res.extend([' ']*counter*2)
left,right=len(s)-1,len(res)-1
while left>=0:
if res[left]!=' ':
res[right]=res[left]
right-=1
else:
res[right-2:right+1]='%20'
right-=3
left-=1
return ''.join(res)