自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq1922631820的博客

在读研究生,正在开发项目,做一些学习笔记。GitHub笔记:https://github.com/Passion-long/Passion-long.github.io

  • 博客(82)
  • 收藏
  • 关注

原创 力扣【69】x的平方根

题目:实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。题解:方法一:二分法package test;class Solution { public int mySqrt(int x) { ...

2020-08-28 18:20:28 128

原创 力扣【79】单词搜索

题解:

2020-08-20 10:42:09 210

原创 力扣【78】子集

题解:枚举:逐个枚举,空集的幂集只有空集,每增加一个元素,让之前幂集中的每个集合,追加这个元素,就是新增的子集。(好聪明啊~)package test;import java.util.ArrayList;import java.util.List;class Solution { public static List<List<Integer>> enumerate(int[] nums) { List<List<Intege

2020-08-19 21:59:54 473

原创 力扣【75】颜色分类

方法二:三次遍历...package test;import java.util.Arrays;class Solution { public void sortColors(int[] nums) { int red = 0, white = 0, blue = 0; // 找到红白蓝的个数 for (int i = 0; i < nums.length; i++) { if (i == 0) {

2020-08-19 16:16:39 229

原创 力扣【72】编辑距离

题解:规律就是左上、左、上,三个中最小的数加一。动态规划:dp[i][j] 代表 word1 的 i 位置转换成 word2 的 j 位置需要最少步数。所以,当 word1[i] == word2[j],dp[i][j] = dp[i-1][j-1];当 word1[i] != word2[j],dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1其中,dp[i-1][j-1] 表示替换操作,dp[i-1][j] 表示

2020-08-19 15:55:11 248

原创 力扣【64】最小路径和

题解:动态规划。状态定义 —>转移方程—>初始状态—>返回值package test;class Solution { public int minPathSum(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) { return 0; } int rows = grid.length, c

2020-08-19 09:50:17 287

原创 力扣【62】不同路径

题解:这是个杨辉三角形,每个位置的路径 = 该位置左边的路径 + 该位置上边的路径package test;class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; for (int i = 0; i < n; i++) { dp[0][i] = 1; } for (int j = 0

2020-08-19 09:17:29 120

原创 力扣【56】合并区间

题解:对起点和终点分别进行排序,将起点和终点一一对应形成一个数组。如果没有overlap,返回当前起点和终点 如果有overlap,判断以下条件找出最小的起点 如果当前终点大于下一个数组的起点的时候,比较当前终点和下一个终点的大小,取为right 返回满足要求的区间[[left,right]]...

2020-08-19 08:56:42 245

原创 力扣【55】跳跃游戏

题解:贪心算法package test;class Solution { public boolean canJump(int[] nums) { int n = nums.length; int rightmost = 0; for (int i = 0; i < n; i++) { if (i <= rightmost) { rightmost = Math.max(

2020-08-18 21:19:22 299

原创 力扣【49】字母异位词分组

小知识:LeetCode运行和提交的快捷键:执行代码:Ctrl + '提交:Ctrl + Enter题解:使用map,将字母排序,然后当做key,接着看是否i排序完是不是包含key,如果不包含,就放到value里面呗。package test;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;class Solution {

2020-08-18 18:15:02 251

原创 力扣【48】旋转图像

题解:先转置,再将每一行交换顺序。package test;class Solution { public void rotate(int[][] matrix) { int n = matrix.length; // transpose matrix for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) {//转置是i = 0, j = i

2020-08-18 16:36:21 142

原创 力扣【46】全排列

题解:回溯法“我们在之前做了什么,这一步做相应的逆操作,这就叫回溯。”package test;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;class Solution { public List<List<Integer>> permute(int[] nums) { int le

2020-08-18 15:23:22 199

原创 力扣【42】接雨水(常考)

题解:这道题用动态规划来做。package test;class Solution { public int trap(int[] height) { int sum = 0; int[] max_left = new int[height.length]; int[] max_right = new int[height.length]; for (int i = 1; i < height.length - 1;

2020-08-18 12:42:21 143

原创 力扣【39】组合总和

题解:递归+回溯作者:liweiwei1419链接:https://leetcode-cn.com/problems/combination-sum/solution/hui-su-suan-fa-jian-zhi-python-dai-ma-java-dai-m-2/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。package test;import java.util.ArrayDeque;import java.util.A

2020-08-18 00:03:11 328

原创 力扣【34】在排序数组中查找元素的第一个和最后一个位置

二分查找框架int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left + (right - left) / 2; if (nums[mid] == target) { ... } else if (nums[mid] < target) { lef

2020-08-17 21:50:11 135

原创 力扣【33】搜索旋转排序数组

题解:题目要求 O(logN)O(logN) 的时间复杂度,基本可以断定本题是需要使用二分查找,怎么分是关键。由于题目说数字了无重复,举个例子:1 2 3 4 5 6 7 可以大致分为两类,第一类 2 3 4 5 6 7 1 这种,也就是 nums[start] <= nums[mid]。此例子中就是 2 <= 5。这种情况下,前半部分有序。因此如果 nums[start] <=target<nums[mid],则在前半部分找,否则去后半部分找。第二类 6 7 1 2 3

2020-08-17 15:56:34 157

原创 力扣【32】最长有效括号

方法一:使用栈,先把-1存到栈低,然后如果是'('就往里存对应的下标,如果是')'就pop()出来'(',然后让i - stack.peek(),就是最长的长度。package test;import java.util.Stack;class Solution { public int longestValidParentheses(String s) { int maxans = 0; Stack<Integer> stack = new

2020-08-17 12:18:00 198

原创 力扣【31】下一个排列

题解:注意:最后排序的时候是让最后一个和第一个排序的,因为就是倒序啊,直接第一个和最后一个交换就行啦!!!作者:LeetCode链接:https://leetcode-cn.com/problems/next-permutation/solution/xia-yi-ge-pai-lie-by-leetcode/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。package test;import java.util.Arrays.

2020-08-17 08:25:42 150

原创 力扣【29】两数相除

题解:减去左移乘2的值,然后判断是否减了一半了,如果到了或超过一半了,那就把这部分的c加上,剩余的重复操作。package test;class Solution { public int divide(int dividend, int divisor) { if(dividend == Integer.MIN_VALUE && divisor == -1) return Integer.MAX_VALUE; boo

2020-08-16 23:02:42 174

原创 力扣【28】实现 strStr()

此题就是为了实现.indexOf();方法一:class Solution { public int strStr(String haystack, String needle) { int L = needle.length(), n = haystack.length(); for(int i = 0; i < n - L + 1; i++){ if(haystack.substring(i, i + L).equals(n

2020-08-16 19:35:48 125

原创 力扣【27】移除元素

题解:和上一道题一样,使用快慢指针。package test;class Solution { public int removeElement(int[] nums, int val) { int i = 0; for (int j = 0; j < nums.length; j++) { if (nums[j] != val) {//注意这里判断的是nums[j],而不是nums[i] nums

2020-08-16 19:15:03 156

原创 力扣【26】删除排序数组中的重复项

题解:快慢指针。package test;class Solution { public int removeDuplicates(int[] nums) { //边界条件 if(nums.length == 0){ return 0; } //使用快慢指针 int i = 0; for(int j = 1; j < nums.length; j++){

2020-08-16 18:51:27 70

原创 力扣【25】K个一组翻转链表(字节跳动面试题)

题解:作者:reals链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/tu-jie-kge-yi-zu-fan-zhuan-lian-biao-by-user7208t/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。package test;class ListNode { int val; ListNode next;

2020-08-16 15:54:09 228

原创 力扣【24】两两交换链表中的节点

方法一:递归这次一定要记住递归三要素,不能改了:1、终止条件2、返回值3、本级递归做什么以后碰到这个题一定要用递归。package test;class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}//class Solution {// public ListNode swapPairs(ListNode head) {// //终止条件//

2020-08-16 12:37:42 198

原创 力扣【23】合并K个排序链表

类似力扣【21】合并两个有序链表。

2020-08-16 09:54:01 330

原创 力扣【22】括号生成

题解:深度优先遍历「回溯算法」是「树行问题」上的「深度优先遍历」; 用一个变量去搜索所有可能的情况,理解「回溯算法」,脑子里要建立一个形象的动画,想象一根绳子在走迷宫的时候变长变短,变短就是「回溯」、「撤销选择」的意思; 很多基础的「回溯」问题,先要画图,然后写代码就容易很多。递归三要素:1、终止条件2、返回值3、本级递归内容package test;import java.util.ArrayList;import java.util.List;class ListN

2020-08-14 00:04:29 181

原创 力扣【21】合并两个有序链表

方法一:递归啊,哎。因为都是排好序的,所以如果l1.val < l2.val的话,那么就让l1.next当头节点,继续和l2进行比较,最后范围的是l1。终止条件是某一个链表为空了,就是另一个剩余的链表的值都更大,直接返回另一个链表就好了。package test;class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } List

2020-08-13 22:15:07 271 1

原创 力扣【20】有效的括号

小知识:1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!题解:方法一:使用栈。package test;import java.util.Stack;class Solution

2020-08-13 19:07:48 140

原创 力扣【19】删除链表的倒数第N个节点

题解://倒数第n个,也就正数第length()-n+1个,这我倒是想到了,就是忘了怎么找到第n个节点了。// 定义一个新节点用来指向结果链表的头节点,这个我也想到了。我没有想到使用while来找到链表的长度,使用for循环找到第n个节点的长度。package test;class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class Solu...

2020-08-13 17:09:29 185

原创 力扣【17】电话号码的字母组合

回溯法:回溯是一种通过穷举所有可能情况来找到所有解的算法。如果一个候选解最后被发现并不是可行解,回溯算法会舍弃它,并在前面的一些步骤做出一些修改,并重新尝试找到可行解。小知识:表示字符类型的变量时使用单引号'' 比如 Char c = 'a';表示字符串类型的变量时使用双引号"" 比如 String c = "a";package test;import java.util.ArrayList;import java.util.HashMap;import java.util.Lis

2020-08-13 16:01:40 295

原创 力扣【15】三数之和

写在前面:set.add()实际执行的是map的方法,因为map中的key是不允许重复的,所以set中的元素不能重复。另外:HashSet和HashMap都不保证顺序,LinkedHashSet和LinkedHashMap能保证顺序。方法一:暴力,首先使用Array.sort()排序,三个for循环,然后加入不重复的set集合,超时了。package test;import java.util.*;class Solution { public List<List&l..

2020-08-13 11:47:18 169

原创 力扣【11】盛最多水的容器

题解:

2020-08-13 09:02:48 107

原创 力扣【5】最长回文子串

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"题解:回文字符串:是一个正读和反读都一样的字符串。暴力匹配:根据回文子串的定义,枚举所有长度大于等于 22 的子串,依次判断它们是否是回文;在具体实现时,可以只针对大于“当前得到的最长回文子串长度”的子串进行“回文验证”;在记录最长回文子串.

2020-08-13 00:29:42 140

原创 力扣【3】无重复字符的最长子串

题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列...

2020-08-12 20:29:20 117

原创 java的方法里或者形参不能改变引用

只能改变对象的内容,不能改变对象的引用。如下所示:package test;public class Main{ static void changestringbuffer (StringBuffer SS1, StringBuffer SS2){ SS1.append ("world"); SS2 = SS1; } public static void main(String[] args){ Integer a = 1;

2020-08-12 19:02:14 554

原创 力扣【2】两数相加

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题解:其实就是加法进位反过来了,往右进位,而不是往左进位。...

2020-08-12 14:54:42 109

原创 力扣【1】两数之和

直接暴力解题:class Solution { public int[] twoSum(int[] nums, int target) { int[] twoSum = new int[2]; for(int i = 0;i < nums.length;i++){ for(int j = i+1; j <nums.length; j++){ if(nums[i] + nums[j] == tar

2020-08-12 12:05:16 157 1

原创 剑指offer第六十七题剪绳子

题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)输出描述:输出答案。示例1输入8输出18方法:...

2020-08-12 11:02:36 97

原创 剑指offer第六十六题机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?方法:递归package test;class Solution { public int movingCount(int m, int

2020-08-12 08:33:48 120

原创 剑指offer第六十五题矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"和"absf"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。方法:回溯法基本思想:0.根据给定数组,初始化一个标志位数组,初始化为fal

2020-08-11 21:50:28 150

空空如也

空空如也

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

TA关注的人

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