
leetcode大赏
leetcode刷题就来此专栏,满满的干货
进击的CV
一起聊聊图像处理
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode-字符串-28 实现 strStr() 函数
题干实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1:输入: haystack = "hello", needle = "ll"输出: 2示例2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当needle是空字符串时,我们应当返回什么值呢?这是一...原创 2020-07-08 10:12:38 · 210 阅读 · 0 评论 -
LeetCode-字符串-14 最长公共前缀
题干编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。解析设置一个临时变量保存第一个字符串的每一位就可以了,比较第2-n个字符串的是否一直相等是的话保存,不是的话返回之前的字符串。可能三...原创 2020-06-25 16:58:50 · 202 阅读 · 0 评论 -
LeetCode-字符串-20 有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: trueclass S...原创 2020-06-25 16:54:49 · 172 阅读 · 0 评论 -
LeetCode-字符串-12 罗马数字转整数
题干罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+...原创 2020-06-25 16:49:10 · 184 阅读 · 0 评论 -
LeetCode-字符串-2 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。解析设置一个临时变量保存第一个字符串的每一位就可以了,比较第2-n个字符串的是否一直相等是的话保存,不是的话返回之前的字符串。可能三个字符串...原创 2020-06-25 16:41:34 · 193 阅读 · 0 评论 -
LeetCode-双指针-26 删除排序数组中的重复项
删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原...原创 2020-06-25 16:35:20 · 171 阅读 · 0 评论 -
LeetCode-双指针-141 环形链表
双指针在链表的操作中比较常见,应该作为一种常用的思路记住。还以上面的图为例,我们设置两个指针从head开始遍历,规定两个指针的前进速度不一样,分别称为快、慢指针,如下图所示,slow指针每次前进一个,fast指针每次前进两个节点。因为fast指针每次前进两个,一定比slow指针先到达环的入口处。而当slow指针进入环的时候,fast指针已经经过了两个节点,如下图所示。这个时候,我们将这个过程想象成400m跑步的追及问题。如果存在环的话,因为fast指针速度更快,一定会追上slow指针。而如果fast...原创 2020-06-25 00:00:01 · 186 阅读 · 0 评论 -
LeetCode-双指针-344 反转字符串
反转字符串分析:直接用双指针public String reverseString(String s) { char[] word = s.toCharArray(); int i = 0; int j = s.length() - 1; while (i < j) { char temp = word[i]; word[i] = word[j]; word[j] = temp; i++; j--; } return new String(word);原创 2020-06-24 23:58:12 · 143 阅读 · 0 评论 -
LeetCode-数组-41 最大子数组
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。输入:[−2,2,−3,4,−1,2,1,−5,3] 输出:6 解释:符合要求的子数组为[4,−1,2,1],其最大和为 6解法1: 暴力求解int max=-10000; int i=0; while(i<nums.size()) { int sum=0; int j=i; while(j<nums.size()) { sum+=nums[j]; if(sum>max) max=s原创 2020-06-24 23:55:15 · 217 阅读 · 0 评论 -
LeetCode-数组-283 移动0
移动0给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]思路很简单,使用使用两个索引lastIndex和curIndex,curIndex从后向前遍历直到其元素为0,然后根据lastIndex与curIndex之间的差值,将元素前移。public void moveZeroes(int[] nums) { int curIndex = nums.length - 1原创 2020-06-24 23:40:50 · 169 阅读 · 0 评论 -
LeetCode-数组-15 三数之和
给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。样例例1:输入:[2,7,11,15] 输出:[]例2:输入:[-1,0,1,2,-1,-4] 输出:[[-1, 0, 1],[-1, -1, 2]]注意事项在三元组(a, b, c),要求a <= b <= c。vector<vector<int> > threeSum(vector<int> &nums)原创 2020-06-24 23:37:43 · 163 阅读 · 0 评论 -
LeetCode-数组-27 求数组中第二大的数
移除元素给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [...原创 2020-06-23 19:39:28 · 455 阅读 · 0 评论 -
LeetCode-数组- 求数组中第二大的数
可以采用先排序,再取第二大的数的方法,采用遍历一次的方法:public int secondMax(int[] nums) { // write your code here int max = 0; int secondMax = 0; //初始化max与secondMax if(nums[0] >= nums[1]) { max = nums[0]; secondMax = nums[1]; } else { max = nums[1]; secondMa原创 2020-06-23 19:35:21 · 970 阅读 · 0 评论 -
LeetCode-数组-122 买卖股票的最佳时机II
买卖股票的最佳时机||给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3..原创 2020-06-23 19:22:41 · 126 阅读 · 0 评论 -
LeetCode-数组-121 买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1].原创 2020-06-23 19:17:08 · 179 阅读 · 2 评论 -
LeetCode-数组-39 恢复旋转数组排序
恢复旋转数组排序:[4,5,1,2,3] - > [1,2,3,4,5]void recoverRotatedSortedArray(vector<int> &nums) { // write your code here // 4 5 1 2 3 -> 5 4 1 2 3 -> 5 4 3 2 1 ->1 2 3 4 5 int sz = nums.size(); if(sz == 0 || sz == 1) return; in原创 2020-06-23 19:12:44 · 141 阅读 · 0 评论 -
LeetCode-数组-1002 有序数组的平方
查找常用字符给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e","l","l"]示例 2:输入:["cool","lock","cook"]输出:["c","o"]思路:给每组字符串,建立26维度数字,统计a-z出现个个数,最后原创 2020-06-23 19:08:51 · 145 阅读 · 0 评论 -
LeetCode-数组-922 有序数组的平方
按奇偶排序数组给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。思路:用i指向0,j指向数组末尾如果A[i]是奇数,A[j]是偶数,就交换A[i]是偶数就i++;A[j]是奇数就j--vector<int> sortArrayByParity(.原创 2020-06-23 19:05:56 · 174 阅读 · 0 评论 -
图形算法与实战:5.图像边缘羽化专题(1)滤波方法羽化
图像羽化专题-滤波方法羽化1. 图像处理前后结果展示图像处理前图像处理后2. 图像羽化 图像羽化,是指图像边缘以渐变的方式,达到逐渐朦胧或者虚化的效果。3. 代码展示#include <cv.h>#include <opencv2/opencv.hpp>#include <opencv2/highgui.hpp> #include <opencv2/core.hpp>#include <open...原创 2020-06-21 19:50:32 · 4637 阅读 · 0 评论 -
图形算法与实战:4.孔洞修补专题
孔洞修补专题1.图像中的孔洞 这里的孔洞,指在白色区域以内的黑色区域,详见下图。2.处理前后图像展示 图像处理前 图像处理后3.代码展示#include <cv.h>#include <opencv2/opencv.hpp>#include <opencv2/highgui.hpp> #include <opencv2/core.hpp>#include <openc...原创 2020-06-21 15:11:45 · 951 阅读 · 0 评论 -
LeetCode-双指针-905.按奇偶排序数组
给定一个非负整数数组A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。思路:用i指向0,j指向数组末尾如果A[i]是奇数,A[j]是偶数,就交换A[i]是偶数就i++;A[j]是奇数就j--解答:vector<int> sortArrayByParity(vector&.原创 2020-06-21 11:17:48 · 216 阅读 · 0 评论 -
LeetCode-数组-977 有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]方法一: 暴力求解: 先全部平方,然后再 排序, vector<int> a 的默认排序函数是 sort(a.begin(),a.end())class Solution{public: vector<原创 2020-06-21 11:15:15 · 268 阅读 · 0 评论 -
LeetCode-数组-922. 按奇偶排序数组Ⅱ
给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。题中排序的意思是:奇数位置上是奇数,偶数位置上是偶数就可以了vector<int> sortArrayByParityII(ve..原创 2020-06-21 11:04:55 · 168 阅读 · 0 评论 -
LeetCode-数组-628. 三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积示例1:输入: [1,2,3]输出: 6示例2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。分析:主要就是考虑负数的情况,第一种:给定的数全是负数,(最大的为最后3个相乘)第二种:负数和正数都有(前两个数乘以...原创 2020-06-21 11:00:14 · 243 阅读 · 0 评论 -
LeetCode-数组-35.搜索插入位置
解答C++/** * Search Insert Position * 搜索插入位置*/#include <stdio.h>int binary_search(int A[], int n, int key) { int low = 0; int high = n-1; while (low <= high) { int mid = low +(high-low)/2; if (A[mid] == key..原创 2020-06-21 10:55:03 · 127 阅读 · 0 评论 -
LeetCode-双指针-29.两数相除
解答:一开始想到的思路是用最普通的使用减法来代替除法,但是这样做效率不高导致部分样例超时,因此采用将divisor移位,同时商相应增加的思想来解决,执行时间会比用减法快不少。class Solution {public: int divide(int dividend, int divisor) { if(dividend==INT_MIN && divisor==-1) return INT_MAX; if(dividend==..原创 2020-06-21 10:47:48 · 202 阅读 · 0 评论 -
LeetCode-双指针-27.移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,原创 2020-06-21 11:07:42 · 321 阅读 · 0 评论 -
LeetCode-双指针-28.实现 strStr() 函数
题干实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1:输入: haystack = "hello", needle = "ll"输出: 2示例2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当needle是空字符串时,我们应当返回什么值呢?这是一...原创 2020-06-19 21:50:47 · 195 阅读 · 0 评论 -
LeetCode-双指针-26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1原创 2020-06-19 21:45:49 · 144 阅读 · 0 评论 -
leetcode-链表-138. 复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 1,它的下一个指针和随机指针都指向节点 2 。节点 2 的值是 2,它的下一个指针指向 null,随机指针指向...原创 2020-06-19 21:33:16 · 216 阅读 · 0 评论 -
leetcode-链表-109. 有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5思路分析可以理解为根据中序遍历翻转出原二叉树,因为链表是有序的,故必...原创 2020-06-19 21:27:14 · 225 阅读 · 0 评论 -
leetcode-链表-92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL对于链表的问题,根据以往的经验一般都是要建一个dummy node,连上原链表的头结点,这样的话就算头结点变动了,我们还可以通过dummy->next来获得新链表的头结点。这道题的要求是只通过一次遍历完成,...原创 2020-06-19 21:24:59 · 195 阅读 · 0 评论 -
leetcode-链表-86. 分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路一:不改变指针域,只调换数据域。即不变位置,只变存储位置的值。这个思路中我利用了栈顶弹出压入的快捷性。这个思路代码很清晰,时间复杂度较好,但空间复杂度较差。给定.原创 2020-06-19 21:22:24 · 194 阅读 · 0 评论 -
leetcode-链表-83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3解法1:双指针法class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if(head==NULL||head->next==NULL..原创 2020-06-19 21:19:19 · 175 阅读 · 0 评论 -
leetcode-链表-82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: 2->3/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNod...原创 2020-06-19 21:15:29 · 141 阅读 · 0 评论 -
leetcode-链表-61. 旋转链表
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0->1-...原创 2020-06-19 21:13:01 · 180 阅读 · 0 评论 -
leetcode-双指针-19.删除链表的倒数第N个节点
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { int count=0;//存放链表长度 ListNode *p=head; while(p)//计算链表长度 { count++; p=p->next; } p=head; ...原创 2020-06-19 00:00:50 · 112 阅读 · 0 评论 -
leetcode-双指针-18.四数之和
链接如下转载 2020-06-18 23:56:14 · 144 阅读 · 0 评论 -
LeetCode-双指针-16.最接近的三数之和
博主说,暂时没想好。。原创 2020-06-18 23:54:00 · 104 阅读 · 0 评论 -
LeetCode-双指针-15.三数之和
给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。样例例1:输入:[2,7,11,15] 输出:[]例2:输入:[-1,0,1,2,-1,-4] 输出:[[-1, 0, 1],[-1, -1, 2]]注意事项在三元组(a, b, c),要求a <= b <= c。vector<vector<int> > threeSum(vector<int> &nums)原创 2020-06-18 23:51:42 · 147 阅读 · 0 评论