自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 收藏
  • 关注

原创 Leetcode 27 移除元素 26. 删除有序数组中的重复项 代码逐行讲解

例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。但是由于数组是连续的,所以我们此时只能将数组的内容进行覆盖,将当前下标后面的所有的数据进行前移,将。后面所有的值前移一个。// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。输入:nums = [0,1,2,2,3,0,4,2], val = 2。

2023-07-28 22:13:44 117

原创 100. 相同的树

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;public class OneHundred { public boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) return true; if (p == null || q == null)

2020-08-07 21:49:31 164 2

原创 337. 打家劫舍 III(逐句解释代码)

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;import java.util.HashMap;public class ThreeHundredsAndThirtySeven { public int rob(TreeNode root) { HashMap<TreeNode, Integer> hashMap = new HashMap<>(); retur

2020-08-05 21:51:04 195

原创 415. 字符串相加(逐句解释代码)

package LeetCode.OneToFiveHundred;public class FourHundredsAndFourteen { public String addStrings(String num1, String num2) { // 用 StringBuffer 方便操作 StringBuffer sb = new StringBuffer(""); // 用双指针,根据加法法则,我们从后往前加,从 carry 来保存进位

2020-08-03 21:03:32 148

原创 114. 二叉树展开为链表(逐句解释代码)

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;import java.util.ArrayList;import java.util.List;public class OneHundredAndFourteen { private List<TreeNode> ans = new ArrayList<>(); public void flatten(TreeNode root) {

2020-08-02 21:31:50 107

原创 面试题 08.03. 魔术索引(逐句解释代码)

package LeetCode.面试题;public class FindMagicIndex { public int findMagicIndex(int[] nums) { return helper(nums,0,nums.length - 1); } private int helper(int[] nums, int left, int right){ // 前提条件 if (left > right) retu

2020-07-31 21:23:48 104

原创 104. 二叉树的最大深度(逐句解释代码)

今天的没啥说的 public int maxDepth(TreeNode root) { if (root == null) return 0; else { // 直接进行递归,找到左右中最大的返回 int left = maxDepth(root.left); int right = maxDepth(root.right); return Ma

2020-07-28 20:08:24 91

原创 410. 分割数组的最大值(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.Arrays;public class FourHundredsAndForty { // dp public int splitArray(int[] nums, int m) { int len = nums.length; // 存储每次最小值 int[][] dp = new int[len + 1][m + 1];

2020-07-25 22:50:41 117

原创 1025. 除数博弈(逐句解释代码)

package LeetCode.OneThousandMore;public class OneThousandAndTwentyFive { public boolean divisorGame(int n) { // 用dp boolean[] dp = new boolean[n + 1]; // 因为先手 0 和 1 必输,没有选择 dp[0] = dp[1] = false; // 进行遍历,寻找可以赢的

2020-07-24 23:15:07 103

原创 64. 最小路径和(逐句解释代码)

package LeetCode.OneToFiveHundred;public class SixtyFour { // 记忆答案 private int[][] ans; public int minPathSum(int[][] grid) { int m = grid.length, n = grid[0].length; ans = new int[m][n]; // 进行搜索 return dfs(gri

2020-07-23 21:50:53 94

原创 剑指 Offer 11. 旋转数组的最小数字(逐句解释代码)

package LeetCode.剑指offer;public class MinArray { public int minArray(int[] numbers) { int start = 0, end = numbers.length - 1; while (start < end){ // 防止除法运算出错 int mid = (end - start) / 2 + start;

2020-07-22 22:11:00 87

原创 95. 不同的二叉搜索树 II(逐句解释代码)

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;import java.util.LinkedList;import java.util.List;public class NinetyFive { public List<TreeNode> generateTrees(int n) { if (n == 0) return new LinkedList<TreeNode>()

2020-07-21 21:38:45 109

原创 167. 两数之和 II - 输入有序数组(逐句解释代码)

package LeetCode.OneToFiveHundred;public class OneHundredAndSixtySeven { public int[] twoSum(int[] numbers, int target) { int len = numbers.length; if (len == 0) return new int[]{-1, -1}; for (int i = 0; i < len; i++){

2020-07-20 22:17:33 64

原创 35. 搜索插入位置(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.Arrays;public class ThirtyFive { public int searchInsert(int[] nums, int target) { int len = nums.length; if (len == 0) return 0; // 可以进行查找,如果有的话,直接就返回能节省时间 int temp

2020-07-17 22:10:01 108

原创 96.不同的二叉搜索树(逐句解释代码)

public int numTrees(int n) { // 每个节点都可能做跟,所以有 n 种可能 // 当每个节点做跟的时候,左边共有 1 - i 个节点,右边共有 n - i 个节点 int[] dp = new int[n + 1]; // 边界处理,我们已知当 n 等于0或1的时候只有一种情况 dp[0] = 1; dp[1] = 1; // 状态转换方程为 f[i] += f...

2020-07-15 17:26:52 73

原创 350. 两个数组的交集 II(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.Arrays;public class ThreeHundredsAndFifty { public int[] intersect(int[] nums1, int[] nums2) { int m = nums1.length, n = nums2.length; // 为空的情况 if (m == 0 || n == 0) return

2020-07-13 22:23:07 84

原创 174. 地下城游戏(逐句解释代码)

package LeetCode.OneToFiveHundred;public class OneHundredAndSeventhFour { // 记忆每次计算之后最小值 int[][] memo; public int calculateMinimumHP(int[][] dungeon) { int m = dungeon.length, n = dungeon[0].length; memo = new int[m][n];

2020-07-12 21:30:04 135

原创 Dijkstra算法图解及其实现(逐句解释代码以及思路)

图片来源图解:先上代码package study;public class Dijkstra { public int[] getShortestPaths(int[][] adjMatrix){ int len = adjMatrix.length; // 用于存放顶点 o 到其他顶点的最小距离 int[] result = new int[len]; // 表示是否遍历过 boolean[]

2020-07-09 21:26:26 361

原创 面试题 17.13. 恢复空格(逐句解释代码)

package LeetCode.面试题;import java.util.HashMap;import java.util.Map;public class Respace { public int respace(String[] dictionary, String sentence) { // 进行暴力寻找,找到字典中所有的能被找到的单词的长度 int len = sentence.length(); Map<String, I

2020-07-09 16:47:08 152

原创 面试题 16.11. 跳水板(逐句解释代码)

package LeetCode.面试题;public class DivingBoard { public int[] divingBoard(int shorter, int longer, int k) { if (k == 0) return new int[0]; if (shorter == longer) return new int[]{longer * k}; // 上面很好解释,一个是不用构建,因为 k 是0,另一个是长短相等,

2020-07-08 17:18:39 214

原创 112.路经总和(逐句解释代码)

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;public class OneHundredAndTwelve { public boolean hasPathSum(TreeNode root, int sum) { // 进行递归搜索 if (root == null) return false; // 特殊情况判断 if (root.left == n

2020-07-07 20:51:42 100

原创 63. 不同路径 II(逐句解释代码)

package LeetCode.OneToFiveHundred;public class SixthThree { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length, n = obstacleGrid[0].length; int[] dp = new int[n]; // 判断 [0][0] 是不是障碍

2020-07-06 22:02:58 113

原创 32. 最长有效括号(逐句解释代码)

package LeetCode.OneToFiveHundred;public class ThirtyTwo { public int longestValidParentheses(String s) { // 默认将‘(’置为 0 int max = 0; char[] cs = s.toCharArray(); int len = s.length(); int[] dp = new int[len];

2020-07-04 21:20:41 130

原创 108. 将有序数组转换为二叉搜索树(逐句解释代码)

package LeetCode.OneToFiveHundred;import LeetCode.TreeNode;public class OneHundredAndEight { public TreeNode sortedArrayToBST(int[] nums) { // 平衡二叉树的中序遍历是从小到大的,我们可以反向构造平衡二叉树 return inverseMiddleOrderTraversal(nums ,0 , nums.length -

2020-07-03 23:25:43 108

原创 378. 有序矩阵中第K小的元素(逐句解释代码)

今天先挖坑,明天来填归并排序的解法package LeetCode.OneToFiveHundred;import java.util.Arrays;public class ThreeHundredsAndSeventyEight { public int kthSmallest(int[][] matrix, int k) {// // 暴力法// int len = matrix.length;// int[] nums = new i

2020-07-02 23:10:19 126

原创 718. 最长重复子数组(逐句解释代码)

package LeetCode.FiveHundredOneToOneThousand;public class SevenHundredAndEighteen { public int findLength(int[] a, int[] b) {// // 暴力法// int ans = Integer.MIN_VALUE;// for (int i = 0; i < a.length; i++){// for (

2020-07-01 22:35:22 77

原创 139. 单词拆分(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.HashMap;import java.util.List;import java.util.Map;public class OneHundredAndThirtyNine { /* 动态规划算法,dp[i]表示s前i个字符能否拆分 转移方程:dp[j] = dp[i] && check(s[i+1, j]); c

2020-06-25 09:24:49 211

原创 16. 最接近的三数之和(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.Arrays;public class Sixteen { public int threeSumClosest(int[] nums, int target) { // 排序,然后固定一个数,从后一个到末尾开始寻找 Arrays.sort(nums); int ans = nums[0] + nums[1] + nums[2];

2020-06-24 07:55:04 102

原创 14. 最长公共前缀(逐句解释代码)

package LeetCode.OneToFiveHundred;public class Fourteen { public String longestCommonPrefix(String[] strS) { // 暴力法破解,第一个字符串的长度进行遍历,与后面的所有的字符串进行对比 if (strS == null || strS.length == 0) return ""; int len = strS[0].length();

2020-06-15 21:17:44 86

原创 1300. 转变数组后最接近目标值的数组和(逐句解释代码)

package LeetCode.OneThousandMore;import java.util.Arrays;public class OneThousandAndThreeHundreds { public int findBestValue(int[] arr, int target) { // 思路是:先排序,然后按照四舍五入规则求取target与当前size-i个元素的整数平均值m。 // 如果,平均值小于等于当前arr[i],即最小值,则说明,v

2020-06-14 22:01:34 145

原创 15. 三数之和(逐句解释代码)

package LeetCode.OneToFiveHundred;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Fifteen { public List<List<Integer>> threeSum(int[] nums) { // 这道题,我们要判度三数之和是否为0,我们可以对数组进行排序,对数组进行遍历

2020-06-12 21:21:04 235

原创 739. 每日温度(逐句解释代码)

package LeetCode.FiveHundredOneToOneThousand;import java.util.Deque;import java.util.LinkedList;public class SevenHundredAndThirtyNine { public int[] dailyTemperatures(int[] t) { // 我们用栈将 t 的下标进行记录,如果栈顶的值比栈底的值大,我们就移除比他大的数,并将两个下标相减进行记录

2020-06-11 21:47:08 133

原创 9. 回文数

这题没啥写的package LeetCode.OneToFiveHundred;public class Nine { public boolean isPalindrome(int x) { String str = String.valueOf(x); StringBuffer sb = new StringBuffer(str); sb.reverse(); StringBuffer sb1 = new StringBuff

2020-06-10 21:59:17 74

原创 面试题46. 把数字翻译成字符串(逐句解释代码)

package LeetCode.剑指offer;public class TranslateNum { public int translateNum(int num) { // 这道题我们可以首先把每个下标看成单独的数字进行翻译,然后和它的前一位进行合并 // 看他们是否合法,即前一位和当前为组合为 10 - 25,如果合法,就将其进行统计,否则就不计数 String str = String.valueOf(num); //

2020-06-09 21:41:22 130

原创 990. 等式方程的可满足性(逐句解释代码)

昨天的每日一题太难了,没费工夫看,就没写题解package LeetCode.FiveHundredOneToOneThousand;public class NineHundredAndNinety { public boolean equationsPossible(String[] equations) { // 把所有的式子用无向图来表示,用下标和内容来表示他们和它们的父节点 // 最初的父节点是自己,所以要进行初始化,然后把所有图的关系表示进去,下标代

2020-06-08 22:11:32 134

原创 128. 最长连续序列(逐句解释代码)

挖坑,明天填,今天配置Clion的opencv配置了五六个小时还没好,哎,烦死了class Solution { public int longestConsecutive(int[] nums) { Set<Integer> num_set = new HashSet<Integer>(); for (int num : nums) { num_set.add(num); } int

2020-06-06 22:16:07 95

原创 1122. 数组的相对排序(逐句解释代码)

package LeetCode.OneThousandMore;public class OneThousandOneHundredAndTwentyTwo { public int[] relativeSortArray(int[] arr1, int[] arr2) { // 进行计数排序 // 因为题目中最长长度为 1000 int [] nums = new int[1001]; // 将所有的数据都存入桶中

2020-06-05 23:05:48 192

原创 238. 除自身以外数组的乘积(逐句解释代码)

package LeetCode.OneToFiveHundred;public class TwoHundredAndThirtyEight { public int[] productExceptSelf(int[] nums) { // 我们可以记录每个下标的左右的值,然后计算每个下标左右值相乘即可 int len = nums.length; // 我们用answer记录左边的值相乘的结果 int[] answer = ne

2020-06-04 19:22:25 108

原创 837. 新21点(逐句解释代码)

package LeetCode.FiveHundredOneToOneThousand;public class EightHundredAndThirtySeven { public double new21Game(int N, int K, int W) { // 从 1 - w 抽卡,当大于 n 的时候小于 k 的概率 // 我们从最后一格开始计算几率,每次抽卡的概率都是 1/w,在 N 之前我们都可以一次抽卡就达到 // N 之后不行,

2020-06-03 22:02:19 149

原创 867. 转置矩阵(逐句解释代码)

package LeetCode.FiveHundredOneToOneThousand;public class EightHundredAndSixtySeven { public int[][] transpose(int[][] a) { // 按照题目所说将矩阵按照对角线进行转置 // 就是将原矩阵的行和列进行转换,所以我们直接把原矩阵复制,将原来的XY进行转置即可 int[][] answer = new int[a[0].length

2020-06-02 21:07:13 314

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除