LeetCode
文章平均质量分 50
会学习的朱丫
永远不能停下前进的脚步!
展开
-
Leetcode 300: 最长递增子序列
动态规划之最长递增子序列原创 2022-07-03 20:56:37 · 189 阅读 · 0 评论 -
Leetcode 740: 删除并获得
动态规划之打家劫舍的改版原创 2022-07-03 20:39:20 · 99 阅读 · 0 评论 -
Leetcode 213: 打家劫舍 II
DP入门级题目 打家劫舍2原创 2022-07-02 09:30:00 · 74 阅读 · 0 评论 -
Leetcode 198: 打家劫舍
DP算法入门级题目可以看看原创 2022-07-01 20:38:26 · 69 阅读 · 0 评论 -
Leetcode 3: 无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。class Solution { public int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); int n = s.length(); // 右指针,初始值为 -...原创 2022-04-07 23:07:46 · 91 阅读 · 0 评论 -
Leetcode 19: 删除链表的倒数第 N 个结点(快慢指针法)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。代码:class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = new ListNode(0); pre.next = head; ListNode start = pre, end = pre; while(n != 0) .原创 2022-04-05 11:15:00 · 168 阅读 · 0 评论 -
Leetcode 876: 链表的中间结点 (快慢指针法)
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。代码class Solution { public ListNode middleNode(ListNode head) { if(head == null){ return null; } ListNode fast = head; ListNode slow = head; ..原创 2022-04-05 10:15:00 · 128 阅读 · 0 评论 -
Leetcode 557: 反转字符串中的单词 III
给定一个字符串s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。class Solution { public String reverseWords(String s) { StringBuffer ret = new StringBuffer(); int length = s.length(); int i = 0; while(i < length){ int ..原创 2022-04-04 12:45:00 · 417 阅读 · 0 评论 -
Leetcode 344: 反转字符串(双指针)
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。class Solution { public void reverseString(char[] s) { int left = 0; int right = s.length-1; while(left <= right){ .原创 2022-04-04 09:45:00 · 294 阅读 · 0 评论 -
Leetcode 167: 两数之和 II - 输入有序数组(二分查找+双指针)
给你一个下标从 1 开始的整数数组numbers ,该数组已按 非递减顺序排列,请你从数组中找出满足相加之和等于目标数target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。你可以假设每个输入 只对应唯一的答...原创 2022-04-03 09:00:00 · 100 阅读 · 0 评论 -
Leetcode 189: 轮转数组(翻转法)
给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。题解:class Solution { public void rotate(int[] nums, int k) { k %= nums.length; reverse(nums, 0, nums.length-1); reverse(nums, 0, k-1); reverse(nums, k, nums.length-1); } pub...原创 2022-04-02 13:49:01 · 200 阅读 · 0 评论 -
Leetcode 283: 移动零 (双指针法)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。自己写的:class Solution { public void moveZeroes(int[] nums) { int n = nums.length; int i = 0; int j = 0; while(i < n){ if(num...原创 2022-04-02 13:25:11 · 397 阅读 · 1 评论 -
Leetcode 796:旋转字符串 (C语言+JAVA)
实现一个函数,可以左旋字符串中的k个字符原创 2022-03-08 00:24:39 · 145 阅读 · 1 评论 -
Leetcode 102.二叉树的层序遍历 ——BFS
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。解题思路本文将会讲解为什么这道题适合用广度优先搜索(BFS),以及 BFS 适用于什么样的场景。DFS(深度优先搜索)和 BFS(广度优先搜索)就像孪生兄弟,提到一个总是想起另一个。然而在实际使用中,我们用 DFS 的时候远远多于 BFS。那么,是不是 BFS 就没有什么用呢?如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差转载 2022-03-05 22:03:55 · 196 阅读 · 0 评论 -
Leetcode 917.仅仅反转字母
给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。 所有英文字母(小写或大写)位置反转。返回反转后的 s 。思路:双指针根据题意进行模拟即可,每次都使用 i 和 j 分别指向左端和右端可以被交换的字母,若当前指针指向的不是字母,则分别往中间移动,直到找到下一个可交换的字母位置,每次交换结束,两指针均往中间移动一位。class Solution { public String reverseOnlyLetters(String s) {原创 2022-02-28 21:50:51 · 239 阅读 · 0 评论 -
算法:平衡二叉树
平衡二叉树原创 2022-02-25 22:49:19 · 748 阅读 · 0 评论 -
算法:有效的括号
算法:有效的括号!Stack的练习,保姆级的解答!原创 2022-02-25 00:30:00 · 132 阅读 · 0 评论 -
算法: 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack","push","push","push","getMin","pop","top","getMin"原创 2022-02-24 10:15:00 · 193 阅读 · 0 评论 -
算法:杨辉三角
杨辉三角保姆级别的分析理解!原创 2022-02-23 17:08:41 · 243 阅读 · 0 评论 -
算法:反转链表(双指针迭代法)
必会的算法题:反转链表。原创 2022-02-15 00:41:41 · 652 阅读 · 3 评论 -
算法:旋转数组的最小数字
旋转数组的最小数字,核心考点:数组理解,二分查找,临界条件原创 2022-02-11 17:56:15 · 326 阅读 · 0 评论