
搜索算法
搜索算法
ShellDawn
Gu-Ah
展开
-
No.246 - LeetCode[287] Find the Duplicate Number - 数组值在1-n内找唯一重复值
这个数组可以形成有环的单向链表,数组下标是当前点,数组值是指向下一节点的指针 假设环外长d,环长l,相碰处距汇点x 则fast = d+l+x,slow = d+x,且fast = 2slow 解得x = l - d,即slow再走d步就是汇点。 第一次初始化假设f和s都各先走了一步, s= 0 , s = nums[s] 即 s = nums[0] f = 0, f = nums[nums[f]] 即 f = nums[nums[0]] 故f第二次初始化为0 /* * @lc app=leetcode原创 2020-10-14 21:34:35 · 142 阅读 · 0 评论 -
No.243 - LeetCode[229] Majority Element II - 数组中找出重复多于N/3的数字
难点在于使用O(1)空间,O(N)时间 因为重复多于N/3,所以至多只有两个数 /* * @lc app=leetcode id=229 lang=cpp * * [229] Majority Element II */ // @lc code=start class Solution { public: vector<int> majorityElement(vector<int>& nums) { int A = 0,cntA = 0;原创 2020-10-12 20:43:09 · 163 阅读 · 0 评论 -
No.233,234 - LeetCode[153] Find Minimum in Rotated Sorted Array - 有序数组旋转一次找最小
O(logN)做法: /* * @lc app=leetcode id=153 lang=cpp * * [153] Find Minimum in Rotated Sorted Array */ // @lc code=start class Solution { public: int findMin(vector<int>& nums) { int N = nums.size(); if(N<=0) return 0;原创 2020-09-30 11:22:27 · 117 阅读 · 0 评论 -
No.231 - LeetCode[126] Word Ladder II - 单词表所有路径 - 经典双向bfs
T掉的代码: /* * @lc app=leetcode id=126 lang=cpp * * [126] Word Ladder II */ // @lc code=start class Solution { public: vector<vector<string>> findLadders(string beginWord,string endWord,vector<string>& wordList) { wo原创 2020-09-24 22:02:57 · 168 阅读 · 0 评论