leetcode刷题记录
吉野原
这个作者很懒,什么都没留下…
展开
-
leetcode 154寻找旋转排序数组中的最小值
还是利用二分查找,若右边增序,将最左边的值和最小值比较,保存更小的,同时丢掉这一块。左边增序同理。 class Solution { public: int findMin(vector<int>& nums) { int start = 0, end = nums.size()-1; int min = nums[start]; while(start <= end){ int mid = (st.原创 2021-02-01 22:28:33 · 128 阅读 · 0 评论 -
leetcode 81搜索旋转排序数组2 C++
利用二分查找 1.左半部分增序,target在左边则进行二分查找。 2.右半部分增序,target在右边则进行二分查找。 class Solution { public: bool search(vector<int>& nums, int target) { int start = 0, end = nums.size()-1; while(start <= end){ int mid = (start+end)/2原创 2021-01-27 18:45:36 · 151 阅读 · 1 评论 -
524 leetcode 通过删除字母匹配到字典里最长单词 Longest world in dictionary through deleting(medium)
时间 92ms 击败82% 思路:双指针,一对一对比较。仅当的时候在s中匹配到d的某个完整的字符串时,首先标记存在这样的字符串(flag = true,也就是不必返回空字符串),然后比较当前字符串的个数是否大于max的大小,若大于则更新pos的位置和最大值个数,若相等则比较字典序的大小,保留字典序更大的字符串位置。 class Solution { public: string findLongestWord(string s, vector<string>& d) { .原创 2020-12-28 20:36:00 · 129 阅读 · 0 评论 -
680 leetcode验证回文字符串2 Valid Palindrome II (Easy)
思路:双指针,左右指针,当出现了不相等的情况,先尝试删除左边的字符,在删除此字符的基础上单独对剩下的字符遍历,若又出现了不等的情况,记录flag=flase. 再尝试删除右边的字符,重复上面的过程,然后若是成功遍历完了删除后的所有字符(即l1>=l2时),则flag = true(这种情况是左边删除失败,但右边删除成功的情况)。 最后的return true是针对字符串本身就是回文字符串的情况,无需进行删除的情况。 class Solution { public: bool validP.原创 2020-12-28 16:08:13 · 150 阅读 · 0 评论 -
leetcode 406根据身高重建队列C++
bool cmp(const vector<int>& a, const vector<int>& b){ if(a[0] == b[0]) return a[1]<b[1];//k升序 return a[0]>b[0];//身高降序 } class Solution { public: vector<vector<int>> reconstructQu...原创 2020-12-21 21:22:25 · 232 阅读 · 0 评论