绥化市建设工程网站招投标,辽阳网站建设学校,湘潭建设网站的公司,学c还是网站开发记录了初步解题思路 以及本地实现代码#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录2/27 1144. 递减元素使数组呈锯齿状2/28 2363. 合并相似的物品3/1 2373. 矩阵中的局部最大值3/2 面试题 05.02. 二进制数转字符串3/3 1487. 保证文件名唯一3/4 982. 按位与为…记录了初步解题思路 以及本地实现代码并不一定为最优 也希望大家能一起探讨 一起进步 目录2/27 1144. 递减元素使数组呈锯齿状2/28 2363. 合并相似的物品3/1 2373. 矩阵中的局部最大值3/2 面试题 05.02. 二进制数转字符串3/3 1487. 保证文件名唯一3/4 982. 按位与为零的三元组3/52/27 1144. 递减元素使数组呈锯齿状 两种情况 第一种奇数位的小 第二种偶数位的小 从头遍历 def movesToMakeZigzag(nums)::type nums: List[int]:rtype: intn len(nums)ans1,ans2 0,0for i in range(n):tmp1,tmp2 0,0if i%20:if i0 and nums[i]nums[i-1]:tmp1 nums[i]-nums[i-1]1if in-1 and nums[i]nums[i1]:tmp2 nums[i]-nums[i1]1ans1 max(tmp1,tmp2)else:if nums[i]nums[i-1]:tmp1 nums[i]-nums[i-1]1if in-1 and nums[i]nums[i1]:tmp2 nums[i]-nums[i1]1ans2 max(tmp1,tmp2)return min(ans1,ans2) 2/28 2363. 合并相似的物品 依次遍历 vlist记录所有出现过的价值 集合统计每个价值的重量和 def mergeSimilarItems(items1, items2)::type items1: List[List[int]]:type items2: List[List[int]]:rtype: List[List[int]]m {}vlist set()for v,w in items1:m[v] m.get(v,0)wvlist.add(v)for v,w in items2:m[v] m.get(v,0)wvlist.add(v)ans []for v in sorted(list(vlist)):ans.append([v,m[v]])return ans 3/1 2373. 矩阵中的局部最大值 每行每列依次寻找相连三格最大值 def largestLocal(grid)::type grid: List[List[int]]:rtype: List[List[int]]n len(grid)tmp [[0]*n for _ in range(n)]for i in range(n):for j in range(1,n-1):tmp[i][j] max(grid[i][j-1],grid[i][j],grid[i][j1])ans [[0]*n for _ in range(n)]for i in range(n):for j in range(1,n-1):ans[j][i] max(tmp[j][i],tmp[j-1][i],tmp[j1][i])return [ans[i][1:n-1] for i in range(1,n-1)] 3/2 面试题 05.02. 二进制数转字符串 小数点后一位一位相加 直至超过32位 def printBin(num)::type num: float:rtype: strcurr 1.0ans 0.while len(ans)32:curr curr/2if numcurr:num-currans1else:ans0if num0:return ansreturn ERROR 3/3 1487. 保证文件名唯一 map存储所有出现过的名字 并记录其当前编号 def getFolderNames(names)::type names: List[str]:rtype: List[str]ans []m {}for name in names:if name not in m:ans.append(name)m[name]1else:ind m[name]while name(str(ind)) in m:ind1cur name(str(ind))ans.append(cur)m[name] ind1m[cur] 1return ans 3/4 982. 按位与为零的三元组 先统计两数相与能够得到的结果cnt 再依次统计每个数在cnt中有多少能与其相与为0 def countTriplets(nums)::type nums: List[int]:rtype: intcnt [0]*(116)for i in nums:for j in nums:cnt[ij] 1ans 0for num in nums:target num ^ 0xffffs targetwhile True:ans cnt[s]s (s-1)targetif starget:breakreturn ans 3/5