![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
leetcode
是小李呀~
这个作者很懒,什么都没留下…
展开
-
棋盘格回溯算法总结
通法:dfs里全是if 没有return,dfs的参数一般只需要坐标和棋盘,偶尔会有boolean[][] 看需要ps: if{1进入状态值,2进入dfs}原创 2022-10-06 20:21:38 · 192 阅读 · 0 评论 -
leetcode笔记
1原创 2021-11-03 13:44:16 · 347 阅读 · 0 评论 -
Leetcode 113路径总和II offerLast和push有什么区别
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。提示:树中节点总数在范围 [0, 5000] 内-1000 <= Node.val <= 1000-1000 <= targetSum <= 1000先看提示,范围5后面6个零,是小于int的解法一class Solution { List<List<Integer>> r原创 2022-03-19 10:16:38 · 817 阅读 · 0 评论 -
Leetcode 两个数组的交集
class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<Integer>(); Set<Integer> set2 = new HashSet<Integer>(); for (int num : nums1) { set1.add.原创 2022-03-01 21:34:12 · 86 阅读 · 0 评论 -
Leetcode 371 两整数之和
class Solution { public int getSum(int a, int b) { while (b != 0) { int carry = (a & b) << 1; a = a ^ b; b = carry; } return a; }}原创 2022-03-01 21:43:26 · 77 阅读 · 0 评论 -
leetcode 337打家劫舍 III
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { .原创 2021-09-02 09:23:19 · 86 阅读 · 0 评论 -
leetcode 213 打家劫舍 II
class Solution { public int rob(int[] nums) { int n = nums.length; if (n == 1) return nums[0]; return Math.max(robRange(nums, 0, n - 2), robRange(nums, 1, n - 1));}// 仅计算闭区间 [start,end] 的最优结果int robRange(int[] nums.原创 2021-09-02 09:21:57 · 89 阅读 · 0 评论 -
leetcode 198 打家劫舍
class Solution {int rob(int[] nums) { int n = nums.length; // 记录 dp[i+1] 和 dp[i+2] int dp_i_1 = 0, dp_i_2 = 0; // 记录 dp[i] int dp_i = 0; for (int i = n - 1; i >= 0; i--) { dp_i = Math.max(dp_i_1, nums[i] + dp_i_2); .原创 2021-09-02 09:20:43 · 56 阅读 · 0 评论 -
leetcode 524 通过删除字母匹配到字典里最长单词
class Solution {//使用双指针来判断一个字符串是否为另一个字符串的子序列。 public String findLongestWord(String s, List<String> d) { String longestWord = ""; for (String target : d) { int l1 = longestWord.length(), l2 = target.length(); if (l1 > .原创 2021-09-01 22:22:06 · 91 阅读 · 0 评论 -
leetcode 141 环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。/** * Definition for singly-linked list. * class ListNo原创 2021-09-01 22:06:25 · 90 阅读 · 0 评论 -
leetcode 34 java
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], t原创 2021-07-17 20:34:44 · 223 阅读 · 0 评论 -
leetcode 76 最小覆盖字串 labuladong模板 java
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”示例 3:输入: s = “a”, t = “原创 2021-07-24 14:42:31 · 236 阅读 · 3 评论 -
leetcode309 Java
class Solution { public int maxProfit(int[] prices) { if (prices == null || prices.length == 0) { return 0; } int length = prices.length; int[][] dp = new int[length][2]; dp[0][0] = 0; dp[0][1原创 2021-07-14 21:17:34 · 112 阅读 · 0 评论 -
leetcode 278 第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例 1:输入:n = 5, bad原创 2021-07-25 11:29:52 · 68 阅读 · 0 评论 -
leetcode 374 猜数字大小
猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num原创 2021-07-25 11:28:19 · 67 阅读 · 0 评论 -
leetcode 69 x的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。public class Solution {// 我们就知道了,如果一个数 aa 的平方大于 xx ,那么 aa 一定不是 xx 的平方根。// 我们下一轮需要在 [0..a - 1][0..原创 2021-07-25 11:26:57 · 68 阅读 · 0 评论 -
leetcode 34 排序数组里找元素第一个和最后一个位置 labuladong方法(含模板)
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], t原创 2021-07-22 19:09:41 · 142 阅读 · 0 评论 -
leetcode 4 归并排序加二分查找
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] nums; int m = nums1.length; int n = nums2.length; nums = new int[m + n]; if (m == 0) { if (n % 2 == 0) { return (nums2[n / 2原创 2021-07-18 10:13:05 · 49 阅读 · 0 评论 -
188 买卖股票的最佳时期vl
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入:k = 2, pr原创 2021-07-14 16:51:52 · 312 阅读 · 0 评论 -
121 买卖股票的最佳时期 Java
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1原创 2021-07-14 16:50:34 · 137 阅读 · 0 评论 -
15 三数之和 Java
class Solution { public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List<List<Integer>> ans = new ArrayList<List<Integer>>(); // 枚举 a for原创 2021-06-24 19:04:21 · 80 阅读 · 0 评论 -
1.两数之和 Java
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; ++i) { if (hashtable.containsKey(target - nums原创 2021-06-24 19:02:33 · 70 阅读 · 0 评论 -
488 祖玛游戏 python
没有找到这个题比较好的Java题解class Solution: def findMinStep(self, board: str, hand: str) -> int: def remove(b): i = 0 for j in range(len(b)+1): if j == len(b) or b[j] != b[i]: if j - i >=原创 2021-06-22 21:28:34 · 228 阅读 · 0 评论 -
529 扫雷游戏 Java
class Solution { int[] dirX = {0, 1, 0, -1, 1, 1, -1, -1}; int[] dirY = {1, 0, -1, 0, 1, -1, 1, -1}; public char[][] updateBoard(char[][] board, int[] click) { int x = click[0], y = click[1]; if (board[x][y] == 'M') {原创 2021-06-22 21:27:06 · 84 阅读 · 0 评论 -
679 24点游戏 Java
class Solution { static final int TARGET = 24; static final double EPSILON = 1e-6; static final int ADD = 0, MULTIPLY = 1, SUBTRACT = 2, DIVIDE = 3; public boolean judgePoint24(int[] nums) { List<Double> list = new ArrayList&原创 2021-06-22 21:26:10 · 78 阅读 · 0 评论 -
37 解数独 Java
class Solution { private boolean[][] line = new boolean[9][9]; private boolean[][] column = new boolean[9][9]; private boolean[][][] block = new boolean[3][3][9]; private boolean valid = false; private List<int[]> spaces = new Arr原创 2021-06-22 21:25:15 · 78 阅读 · 0 评论 -
51 N皇后
import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;public class Solution { private int n; /** * 记录某一列是否放置了皇后 */ private boolean[] col; /** * 记录主对角线上的单元格是否放置了皇后 */原创 2021-06-22 21:23:53 · 61 阅读 · 0 评论 -
全排列刷题
package Leecode;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;public class Solution { public List<List<Integer>> permute(int[] nums){ int len = nums.length; List<Li原创 2021-06-20 19:43:16 · 65 阅读 · 0 评论