适合女生做的网站,凡科建站官网地址,专做衬衫的网站,海南网站建设哪家专业本周刷题#xff1a;
88, 108, 121, 219, 228, 268, 283, 303, 349, 350, 414, 448
88 合并两个有序数组
nums1{1, 2, 3 ,0, 0, 0}
nums2{2, 5, 6}
合成效果#xff1a;nums1{1, 2, 2, 3, 5, 6}
思路#xff1a;【双指针】对两个数组设置双指针#xff0c;依次比较哪…本周刷题
88, 108, 121, 219, 228, 268, 283, 303, 349, 350, 414, 448
88 合并两个有序数组
nums1{1, 2, 3 ,0, 0, 0}
nums2{2, 5, 6}
合成效果nums1{1, 2, 2, 3, 5, 6}
思路【双指针】对两个数组设置双指针依次比较哪个小就放入新数组。遍历完之后再把新数组复制给 nums1。
108 将有序数组转换为二叉搜索树
未做。
121 买卖股票的最佳时机
【动态规划】
217. 存在重复元素
数组 nums1{1, 2, 3, 1}任一值在数组中出现至少两次就返回 true否则返回 false。
思路先排序然后依次遍历。判断当前元素 与 之前元素是否相同发现相同就返回 true如果到最后都没相同则返回 false。
219. 存在重复元素 II
滑动窗口但是忘记怎么做了好了仔细回想了一下想起来了
题目数组nums{1, 2, 3, 1}整数k判断数组中是否存在两个不同的索引 i 和 j。满足 nums[i] nums[j]且 abs(i-j) k。存在返回true否则返回false。
思路【滑动窗口】使用set设置一个数组遍历nums数组先判断是否在st中有如果没有就将该值加入st这里使用set不使用vector是可以去重且可以使用find函数vector遍历查找会超时。判断如果st中元素大于k个就删掉最开始加入的元素这里set自动排序要按num指定下标那个数字或者这里可以使用 unordered_set。 228. 汇总区间
题目数组nums{0, 1, 2, 4, 5, 7} 输出效果[0-2,4-5,7]
思路【双指针】【滑动窗口】
设置一个map数组存放区间先low再fast如果发现 nums[fast] ! nums[fast-1] 就把lowfast插入到map中更新low。
输出再把map集合转到 vectorstring 中int转字符串可以用 to_string() 方法
268. 丢失的数字
题目给定一个包含 [0, n] 中 n 个数的数组 nums 找出 [0, n] 这个范围内没有出现在数组中的那个数。
思路超简单。普通遍历。先排序遍历如果哪个和下标不同就返回该有的那个数字。
283. 移动零
题目给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
示例输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]
思路1从前往后遍历遇0删除并计数k最后在后面插入k个0
思路2【双指针】left指向零元素right往后跑遇到非零元素则交换。交换之后left也要更新。right更新。
303 区域和检索-数组不可变
没看懂题目
349.两个数组的交集
给定两个数组 nums1 和 nums2 返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例输入nums1 [1, 2, 2, 1], nums2 [2, 2] 输出[2]
思路【哈希表】遍历nums1并设置哈希表再遍历nums2如果哈希表有值就说明有。其中有几个细节需要注意比如不可二次哈希赋值不可二次插入结果数组
350. 两个数组的交集 II
题目请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数应与元素在两个数组中都出现的次数一致如果出现次数不一致则考虑取较小值
示例输入nums1 [1,2,2,1], nums2 [2,2] 输出[2,2]
思路【双指针分别指向两个数组】比较两个数组对应值然后相同则入栈不同则自增。
414.第三大的数
给你一个非空数组返回此数组中 第三大的数 。如果不存在则返回数组中最大的数。
示例输入[3, 2, 1] 输出1 解释第三大的数是 1 。
思路设置一个set遍历时往里面插值如果大于3就删除首元素最小。
448. 找到所有数组中消失的数字
题目给你一个含 n 个整数的数组 nums 其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字并以数组的形式返回结果。
示例输入nums [4,3,2,7,8,2,3,1] 输出[5,6]
思路【哈希表】且自身实现哈希表。