LeetCode
文章平均质量分 68
记录和分享刷力扣的思路和过程
阿翔要努力变强
记录和分享自己的学习成长过程,目前主要学习用Qt开发应用软件以及一些图像处理的工作,偶有关于深度学习的记录和分享
展开
-
LeetCode刷题篇—206.反转链表
LeetCode刷题篇—206.反转链表题目思路求解方法题目反转一个单链表。思路最近因为很多链表里的问题都涉及到了递归的方法,所以又重新深入思考了一些递归的问题,今天这道题分享迭代和递归两种思路。在链表类型的题目当中,经常用到的一个小技巧就是创建一个dummy节点,和一个记录head节点的cur节点。一、迭代法(1)原本的顺序是1->2->3,初始dummy节点为NULL,即(dummy,1->2->3)*cur = head记录头节点,指向1。当cur节点不为N原创 2021-03-27 22:24:04 · 224 阅读 · 0 评论 -
LeetCode刷题篇—27.移除元素
LeetCode刷题篇—27.移除元素题目思路求解方法题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路一、一次遍历法题目要求输出的是更新后的数组长度,而且可以修改输入数组,那么可以考虑将所有数值等于val的元素全部移到数组尾端,然后输出前部分的长度。(1)定义新的变量n等于数组原创 2021-03-21 17:13:58 · 168 阅读 · 0 评论 -
LeetCode刷题篇—20.有效的括号
LeetCode刷题篇—20.有效的括号题目思路求解方法题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。思路这是一道典型的用到栈这种数据结构的题目,当然除了只用栈之外还可以选择栈和哈希表结合的求解,下面将逐一介绍:一、单纯使用栈(几种思路细节略有不同)整体思路是将字符串中先遇到的括号入栈,当后面的括号与栈顶的括号匹配的时候,出栈,如果最后栈为空,说明全部原创 2021-03-21 16:39:09 · 217 阅读 · 0 评论 -
LeetCode刷题篇—496.下一个更大的元素(一)
LeetCode刷题篇—496.下一个更大的元素(一)题目思路求解方法题目给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。思路1、辅助栈根据之前一题所讲的辅助栈的思想,通常是除了所有元素所在栈之外,另开辟新的栈存储一些变量。对于本原创 2021-03-08 22:10:25 · 180 阅读 · 0 评论 -
LeetCode刷题篇—155.最小栈
LeetCode刷题篇—155.最小栈题目思路求解方法题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。思路此题意为随时找到栈中的最小元素,栈是一种先入后出的数据结构,只能访问到栈的栈顶元素,所以无法像数组或链表一样随意遍历访问到最小元素。所以此时在这到题中采用辅助栈的方法,用另外的一个栈存储记录每原创 2021-03-08 21:13:06 · 248 阅读 · 0 评论 -
LeetCode刷题篇—121.股票问题
LeetCode刷题篇—169.多数元素题目思路求解方法题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。思路将题目进行翻译即——需要找出给定数组中两个数字之间的最大差值(即,最大利润)。此外,第二个数字(卖出价格)必须大于第一个数字(买入价格)原创 2021-03-02 21:02:12 · 358 阅读 · 0 评论 -
LeetCode刷题篇—169.多数元素
LeetCode刷题篇—169.多数元素题目思路求解方法题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。思路1、投票法投票法的大致思路是,假定数组首元素为多数元素,然后和它相同,则计数count++,否则count–,若计数count-1=0,则说明之前的相同元素数量和不同元素数量相等,则认为下一个元素为数组中的多数元素举例[1,2,3,3,3,3,2](1)默认多数元素原创 2021-03-02 20:44:43 · 137 阅读 · 0 评论 -
LeetCode刷题篇—283.移动零
LeetCode刷题篇—283.移动零题目思路求解方法题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。思路1、暴力法题目要求将所有0元素移动到数组末尾,即可以理解为将非零的元素移动到数组前面,所有非零元素移动完后,将剩余元素置0即可。举例:[1,2,0,3](1)第一个元素非零,将其置于本位;(2)第二个元素非零,将其置于本位;(3)第三个元素为零,跳过;(4)第四个元素非零,将其置于第三位;[1,2,3,3](5)遍历完,将第三位之原创 2021-03-02 16:35:29 · 279 阅读 · 0 评论 -
LeetCode刷题篇—53.最大子序和
LeetCode刷题篇—53.最大子序和题目思路求解方法题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路本题的思路有暴力法和分治法两种,首先介绍暴力法求解。1、暴力法根据第一题的启发,我首先想到(1)先设定初始sum值为0,再新开辟一个vector数组arr用于存放和值;(2)双层循环遍历数组,外层 i 从0到数组最后一个元素,将nums[i]即这个数本身给到sum,再将sum放入arr中;(3)内层循环 j 从 i+1 开始原创 2021-02-22 23:19:33 · 342 阅读 · 0 评论