摘要: 解法一:暴力求解 分析: 直接两层循环,遍历数组: 第一层循环确定一个数n1,然后第二层循环中判断数组中是否存在target - n1,如果存在,将{n1,n2}返回。 O(n^2),会超时。 代码: vector<int> twoSum_force(vector<int>& nums, int t 阅读全文
posted @ 2021-05-27 09:48 KyrieLiu 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 解法一:排序 *参考:*https://leetcode-cn.com/problems/longest-consecutive-sequence/solution/java-pai-xu-ji-he-ha-xi-biao-bing-cha-ji-by-lzhlyl/ 分析: 如果这个序列是个有序的 阅读全文
posted @ 2021-05-26 23:02 KyrieLiu 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1 介绍 在集合处理中,在初始状态,每个元素构成一个单元素的集合,然后按照一定的顺序将属于同一组的元素合并在同一个集合中,需要反复查找一个元素在哪个集合中,这类问题看似不复杂,但数据量极大,使用正常的数据结构来描述,在空间上过大,计算机无法承受,即使空间通过,时间复杂度也极高,在算法设计中很难在短时 阅读全文
posted @ 2021-05-25 14:03 KyrieLiu 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 解法一:模拟法 分析: 模拟遍历两个数组,找第 k 小的元素,作为中位数,或进行下一步处理返回中位数。k就是下文中的 div 设置两个指针 i、j分别遍历两个数组 设置一个计数器count表示当前遍历过的元素总数 设置div = (m + n + 1)/2,表示下面两者其一: 中位数的位置:如【1, 阅读全文
posted @ 2021-05-23 16:37 KyrieLiu 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 与33.搜索旋转排序数组不同的是,数组中的元素可以重复。 比如:数组【0 0 1 2 2 5 6】 经旋转变成【2 5 6 0 0 1 2】 解法一:顺序查找 略 解法二:二分查找 分析: 经过旋转后的数组,只是局部有序,整体并不有序,且有重复的元素,本题如何应用二分? 在开始的判断中,与33.搜索 阅读全文
posted @ 2021-05-21 22:43 KyrieLiu 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 解法一:顺序查找 时间复杂度:O(n) int search(vector<int>& nums, int target) { for(int i=0;i<nums.size();i++){ if(nums[i]==target) return i; } return -1; } 解法二:二分查找 阅读全文
posted @ 2021-05-18 21:41 KyrieLiu 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 与LeetCode26不同,允许一个元素最多出现两次 解法一:双指针法+计数器 分析: 仍然使用双指针法,一个用来覆盖(下面代码中的 index ),一个用来遍历(下面代码中的 i) 区别在于,使用一个计数器count,代表当前正在遍历的元素(即 i 指向的元素)重复的次数,初始值为1,即重复1次( 阅读全文
posted @ 2021-05-17 15:44 KyrieLiu 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 双指针法 分析: 设置两个指针:p1,p2,初始p1指向数组的第一个元素,p2指向第二个元素 1)如果p1的值 == p2的值,就让p2后移一位 2)如果p1的值 != p2的值,修改p1的下一个元素的值为p2指向元素的值,然后将二者同时后移 p1始终指向要覆盖的元素的前一位,p2遍历整个数组将不重 阅读全文
posted @ 2021-05-11 19:27 KyrieLiu 阅读(81) 评论(0) 推荐(0) 编辑