随笔分类 - Leecode
常见的排序算法
摘要:集中常见的排序算法 插入排序 插入排序的原理就是我们对这个数组进行划分为有序数组和无序数组,将无序数组的元素插入到这个有序数组中它应该存放的位置当中去,使其有序数组逐渐扩大 ** 难点 ** 我们如何进行插入插入之后是要将插入之后的有序数组的元素往后移动的,如何进行移动 import java.ut
leecode无法使用StringJoiner,leecode版本
摘要:在做这个leecode151反转字符串的时候用了这个StringJoiner,但是这个leecode无法识别,刚开始我还以为是leecode版本不支持,于是我上网搜了一下 发现网上的回答说是这个版本问题,于是我又上网搜了一下leecode使用的java版本号,发现我搜不出来,于是我觉得并不是这个le
剑指offer15替换空格字符串
摘要:package heima_study.day3; import java.util.Scanner; public class 替换空格剑指offer { public static void main(String[] args) { Scanner input = new Scanner(Sy
leecode541反转字符串(带有调试代码)
摘要:完整带有调试代码 package heima_study.day3; import java.util.Scanner; public class 反转字符串541 { public static void main(String[] args) { Scanner input= new Scann
leecode344反转字符串(附有调试代码)
摘要:package heima_study.day3; import java.util.Scanner; public class 反转字符串344 { public static void main(String[] args) { Scanner input = new Scanner(Syste
leecode151 反转字符串中的单词(附有手写思路)
摘要:丑陋的思路 StringJoiner版本 前言 刚开始我是用StringJoiner写的,因为我看到这个每个元素之间有一个固定的空格我就想着能够直接用这个StringJoiner来进行书写,但是我提交的时候说这个StringJoiner无法识别,因为这个StringJoiner是java8之后才有的
leecoode54螺旋矩阵——带有调试代码
摘要:我参考的别人的题解 class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> ans = new ArrayList<Integer>(); int m = matrix[0].length;
leecoode59螺旋矩阵——带有调试代码
摘要:我的题解 关键就是如何去找这个循环,如何去遍历,我刚开始想到了以圈来进行遍历 但是问题是我并没有想到是四个循环分别是遍历四条边 我想的是通过一个循环来四条边,i=1的时候遍历第一条边,然后i=2的时候遍历第二条边... 上面的也能做出来,但是你会发现这个完全是没必要的,因为你要通过if语句来进行判断
leecode209长度最小的子数组——手写详解
摘要:滑动窗口解决代码的思路和优化思路——手写版 思路 优化思路 代码分析 通过代码(未优化) class Solution { public int minSubArrayLen(int target, int[] nums) { int fast=0,low =0; int sum=nums[low]
leecode904水果成篮——手写详解
摘要:思路讲解和分析 代码分析 通过代码(未优化) 参考这个错误分析对这个代码进行分析,并抽时间进行优化 public static int totalFruit(int[] fruits) { int fast = 0,low=0; int length=0; int type1=fruits[fast
手写讲解leecode704题,带你搞明白这二分搜索的易错点
摘要:代码分析 手写代码分析,更直观的表现出这个代码的难点 代码 package 数组; import java.util.Scanner; public class 二分搜索 { public static void main(String[] args) { int n; Scanner input
leecode35题搜索插入位置——手写分析一看就懂
摘要:代码分析 难点 相比704的二分搜索算法这一个多了一个寻找插入位置的选项区别在于704二分搜索算法我们查找失败返回的是-1,这个查找失败我们要返回这个下标元素,所以怎么利用我们已经定义的变量来确定这个下标是关键 按照这个红色圆圈标注的顺序进行分析代码 源代码 package 数组; import j
leecode69X的平方根和367有效的完全平方根-题目讲解和代码
摘要:代码讲解 69 源代码 class Solution { public int mySqrt(int x) { int left=0,right=x/2+1; int m=0; while(left<=right){ //易错点1,容易忽略这个当平方比较大的时候会直接超过这个int型数据的范围 m=
leecode34在排序数组中查找元素的第一个和最后一个位置-手写详解
摘要:源代码的一些注解 我这个的思路是先找出这个target,找到了之后在便利这个target周围的变量,相当于是做了一个二分搜索算法之后,当这个range范围比较小的时候我这种方法的时间复杂度比较低,但是当这个range范围比较大的时候我的时间复杂度应该是比两个二分搜索算法所需时间多的. 我在代码随想录
leecode27移除元素-手写详解
摘要:源代码分析 其实这个题,我进行遍历的时候已经出现问题了,题木要求的是我只需要能够返回返回的数组就行了,所以对于这个题,我们不需要进行交换,只需要进行替换就可以了 改进代码 for(int i=0;i<length-count;i++){ if(nums[i]==val){ nums[i]=nums[
leecode26题删除排序数组中的重复项
摘要:双指针法的介绍 下面内容转载自代码随想录 点击进入代码随想录 双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组慢指针:指向更新 新数组下标的位置 很多同学这道题目做的很懵,就是不理解
leecode977有序数组的平方——手写详解
摘要:代码 手写详解 第一次代码(一遍过) package 数组; import java.util.Scanner; public class 有序数组的平方977 { public static void main(String[] args) { int n; Scanner input = new
leecode283移动零——手写详解
摘要:代码 手写详解 第一次错误 public static void moveZeroes(int[] nums) { int length = nums.length; int fast,low=0;//双指针法 for(fast=0;fast<length;fast++){ //fast循环去找非零
leecode844比较含有退格的字符串
摘要:leecode844比较含有退格的字符串 代码分析 暴力解法 class Solution { public boolean backspaceCompare(String s, String t) { //暴力解法 int s_length=s.length(); int t_length=t.l