LeetCode
shY`
这个作者很懒,什么都没留下…
展开
-
岛屿类问题的通用解法、DFS 遍历框架
深度优先遍历,岛屿问题转载 2023-02-03 10:12:13 · 112 阅读 · 0 评论 -
LeetCode-152. 乘积最大子数组
乘积最大子数组原创 2022-09-08 13:20:09 · 163 阅读 · 0 评论 -
LeetCode-918. 环形子数组的最大和
环形子数组的最大和原创 2022-09-07 15:51:10 · 397 阅读 · 0 评论 -
LeetCode-剑指 Offer 35. 复杂链表的复制
复杂链表的复制原创 2022-09-07 10:38:33 · 191 阅读 · 0 评论 -
【剑指Offer】面试题 05.03. 翻转数位
题目给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。示例输入: num = 1775(110111011112)输出: 8输入: num = 7(01112)输出: 4提前知道的概念位运算n & (1 << i)首先:1 << i的含义是将i左移i位,如1<<2 则0001->0100那么n & (1 << i)就是计算n的第i位(从右数)解法、原创 2022-03-29 22:43:54 · 135 阅读 · 0 评论 -
【剑指Offer】1025 除数博弈
题目爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 n 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < n 且 n % x == 0 。用 n - x 替换黑板上的数字 n 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 true 。假设两个玩家都以最佳状态参与游戏。示例示例1输入:n = 2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。示例2输入:n = 3原创 2022-03-29 08:59:40 · 107 阅读 · 0 评论 -
【剑指Offer】49丑数
题目我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。提前知道的概念在解答这道题之前,我们需要知道一个概念,即丑数是由他之前的丑数计算得来例如2 = 1 * 23 = 1 * 35 = 1 * 54 = 2 * 2;6 = 2 * 3 或者 3 * 2 10 = 2 * 5一次类推,我原创 2022-03-27 10:46:09 · 637 阅读 · 0 评论 -
【剑指Offer】10 青蛙跳台阶问题2
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例示例1输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1思想有题目可知,青蛙有两种行为方式1、跳一级台阶2、跳两级台阶并且在0、1、2级台阶的情况下跳法数已知即1、0级台阶,有一种跳法2、1级台阶,有一种跳法3原创 2022-03-26 08:53:18 · 270 阅读 · 0 评论 -
【剑指Offer】11旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。 注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。示原创 2022-03-24 09:51:18 · 411 阅读 · 0 评论 -
【剑指Offer】06从尾到头打印链表
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]方法一 循环遍历通过遍历将链表中的值装入list,然后将list中的值赋值给返回数组class Solution { public int[] reversePrint(ListNode head) { List<Integer> list = new ArrayList<>(); in原创 2022-03-23 10:53:37 · 599 阅读 · 0 评论 -
LeetCode-27 移除元素(双指针算法)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例示例一给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例二给定 nums = [0,1,2,2,3,0,4,2],原创 2020-06-18 17:58:30 · 216 阅读 · 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, 并且原数组 n原创 2020-06-18 16:35:39 · 192 阅读 · 0 评论 -
LeetCode-53 最大子序和(动态规划、贪心)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。这里我主要采用了暴力法、动态规划、以及贪心算法。其中动态规划与贪心算法的时间复杂度都是O(n),并且算法的思路非常相似,而暴力破解的复杂度相对较高,为O(n2)。当然,LeetCode题解中还有关于分治法的相关题解,以为时间复杂度不如动态规划与贪心算法,因此这里不再提原创 2020-06-05 22:55:42 · 330 阅读 · 0 评论 -
LeetCode设计循环队列(622)
结果代码import java.util.ArrayList;import java.util.List;/** * 设计循环队列 */public class MyCircularQueue { //数组 private Integer[] data; //头指针 private int head; //尾指针 private int tail; //长度 private int length; /** *原创 2020-06-02 10:25:08 · 169 阅读 · 0 评论 -
[LeetCode] 2.两数相加
题目给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807方法一 递归//两...原创 2020-01-07 16:45:36 · 187 阅读 · 0 评论 -
[LeetCode] 6.有效的括号
思路这道题相对简单,利用栈的后进先出遇到左括号入栈,栈顶指针加一遇到右括号则使栈顶元素出栈,检查与当前有括号是否匹配不匹配则结束循环匹配则栈顶指针减一,进行下一次比对bool isValid(char * s){ //检查字符串是否为空 //这里需要注意s[0]=="",""表示NULL,而" "则表示空格,两个判断所需要的时间不同,""所用时间比" " //要短的多 ...原创 2020-01-06 10:59:59 · 110 阅读 · 0 评论 -
[LeetCode] 1.Two Sum
解题思路方法一暴力破解,相信大家最先想到的就是暴力破解,使用两层循环,获得第一个数时,再遍历数组(我选择的是从j=i+1开始看是否存在**target**与当前数字的差值int* twoSum(int* nums, int numsSize, int target, int* returnSize){ static int a[2]={0}; int *p; p=num...原创 2020-01-05 16:58:34 · 125 阅读 · 0 评论