随笔分类 - 力扣刷题笔记
摘要: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 向右旋转
阅读全文
摘要:51. N 皇后 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代
阅读全文
摘要:41. 缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 提示: 你的算法的时间复杂度应为O(n),并且只
阅读全文
摘要:31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须**原地**修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 →
阅读全文
摘要:21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 归并思想 public ListNode mergeTwoLists(ListNode
阅读全文
摘要:11. 盛最多水的容器 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 **说明:**你不能倾斜
阅读全文
摘要:1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因
阅读全文
摘要:79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F
阅读全文
摘要:来源于Acwing yxc的闫氏dp分析讲解,本文为几道经典例题的笔记 53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-
阅读全文
摘要:349. 两个数组的交集 难度简单227 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明
阅读全文
摘要:347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 你可以假设给定的 k 总是合理的,
阅读全文
摘要:字符串的翻转问题 344 反转字符串 双指针做法,反转问题的经典的解决方案,利用两个指针,每次相对移动,移动过程中交换,直到指针相遇。 public void reverseString(char[] s) { if(s.length == 0) return; int l = 0, r = s.l
阅读全文
摘要:一、虚拟头节点的选取 一般来说,如果对链表进行的操作有可能改变head节点,比如删除head或者移动head,可以对边界条件进行判空。但这种情况的一般做法是:我们创建一个虚拟头节点,无论head如何变化,虚拟头节点是始终存在的。 虚拟头节点的运用十分广泛,我们来看一看具体的运用。 19. 删除链表的
阅读全文
摘要:题目描述 784. 字母大小写全排列 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。 示例: 输入:S = "a1b2" 输出:["a1b2", "a1B2", "A1b2", "A1B2"] 输入:S = "3z4" 输出:["3
阅读全文
摘要:深度优先搜索刷题总结 46. 全排列 46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] public List<List<Integer>> fi
阅读全文
摘要:Leetcode数组题 3 [toc] 66.加一 题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例: 链接: "https://leetcode c
阅读全文
摘要:[toc] 删除链表元素:哨兵节点 83. 删除排序链表中的重复元素Ⅰ 题目描述 给定一个 排序链表 ,删除所有重复的元素,使得 每个元素只出现一次 。 这是一道标星为简单的题,难度不是很大。需要注意的几点是: 链表已经排好序,这样子的话,寻找重复元素,只要看下一个是否与前一个相等就好了。 还有一点
阅读全文
摘要:[toc] 707.设计双向链表 链表简介 链表(LinkedList) 是一种线性表,但不是顺序表,因为它是通过节点直接的相互引用相互联系起来的。 由于不必按顺序存储, 链表在插入和删除的时候可以达到O(1)的复杂度 ,比顺序表快的多。但是查找一个节点或者访问特定编号的节点则需要O(n)的时间。
阅读全文
摘要:[toc] Leetcode动态规划【简单题】 动态规划 (Dynamic programming,简称DP),是一种把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划相较于递归,拥有更少的计算量。 53. 最大子序和 题目描述 给定一个整数数组 ,找到一个具有最大和的连续子数组(子数
阅读全文
摘要:[toc] 26,27删除数组重复项 题目 题目26 给定一个排序数组,你需要在 原地删除 重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例: 给定数组 nums = [1,1,2],
阅读全文

浙公网安备 33010602011771号