- 博客(17)
- 问答 (3)
- 收藏
- 关注
原创 明天去工作了_c拉v
不太想写博客了 ,写的都是自己会的 ,来回折腾没啥意义先停更了 等我研究点啥再写出来发吧 一直也没有像别人一样引流找人点赞评论什么的,本来初心就是督促自己学习,顺带帮助一下和我一样自学找工作的同学们...
2022-05-08 22:47:07
194
原创 41. 缺失的第一个正数
41. 缺失的第一个正数题目在文末41. 缺失的第一个正数思路分析题目步骤细节代码(附详细注释)题目思路分析题目题目直接告诉了空间复杂度O(1),那只能是原地置换了没有出现的最小的,那么想到的就应该是有序数组步骤那就还是老样子,咱们自己先定一个规则数组下标就是元素的值。例:array[0] = 0 ,array[1] = 1…以此类推但是 题目要的是正整数,那0就没必要存了,那就是array[0] = 1 ,array[1] = 2经过这样移动一番,再遍历找哪个下标和元素不对应,
2022-05-01 14:58:58
120
原创 剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字题目在文末剑指 Offer 03. 数组中重复的数字思路原地置换分析步骤代码题目思路刚看到这题立马想到遍历存到set中,然后再去contains去比但是这样太简单了并且空间复杂度O(n),那么既然是数组,原地置换可不可以呢。这样空间复杂度就是O(1)了原地置换分析步骤原地置换的话,谁跟谁换是个问题,那我们就定个规矩数组下标就是元素的值。例:array[0] = 0 ,array[1] = 1…以此类推遍历数组如果当前下标和元素的值不对应,那就
2022-04-30 20:54:19
289
原创 1052. 爱生气的书店老板
1052. 爱生气的书店老板题目在文末1052. 爱生气的书店老板思路题目分析固定窗口滑动上代码巧妙之处题目思路刚看这题,属实有点烦,哈哈 废话太多 我先总结一下题目分析总时长(开店时间):n顾客数组的下标对应进店时间 :i值对应顾客数量:customers[i]grumpy[i] 的值为1则生气,0则不生气不生气的一段时间 :minutes这样总结了一下 其实很简单了。就是看不生气的这段时间minutes在哪段可以让满意的顾客数量最多那么老板生气的时间是一段固定连续的长度,那么想
2022-04-28 16:40:39
78
原创 归并&快排(我不信有人看完我这篇学不会)
文章目录归并排序介绍步骤分析代码(附详细注释)性能分析快速排序介绍(图文配合使用效果最佳)步骤分析原地分区(很巧妙的思想,建议反复食用)代码(附详细注释)性能分析归并与快排对比归并排序介绍先简单介绍一下归并排序。归并排序的思想就是分治+递归。分治:分而治之,大模块拆分小模块递归:由浅入深,层层递进(递归三要素:参数、条件、出口)可能刚入门的还不太了解,我偷了一张图 一看便知看过数据结构与算法之美的应该看过这张图,我这篇文章用白话给你搞懂归并和快排。步骤分析这张图画的很清楚,就俩步骤,
2022-04-26 19:05:54
380
原创 冒泡&插入&选择(详解及对比)
文章目录冒泡排序核心思想代码(附详细注释)性能分析插入排序核心思想插入比冒泡强在哪(效率)代码(附详细注释)性能分析选择排序核心思想选择与插入的对比代码(附详细注释)性能分析冒泡排序核心思想相邻元素两两相比,每一次冒泡都可以找出最大/最小的元素代码(附详细注释)代码是普通冒泡的升级版:如果某一次冒泡循环,没有元素移动,就证明已经是有序数组了,后面就无需再循环了public void bubbleSort(int[] nums){ //冒泡的次数(大循环) for (int i = 0; i
2022-04-26 15:36:02
948
原创 排序算法的选择
文章目录分析排序算法的三个方面排序算法的执行效率排序算法的内存消耗排序算法的稳定性如何选一个通用高效率的排序算法分析排序算法的三个方面排序算法的执行效率最好情况、最坏情况、平均情况时间复杂度时间复杂度的系数、常数 、低阶比较次数和交换(或移动)次数排序算法的内存消耗原地排序:空间复杂度O(1),除存储数据本身的空间以外,不需要其他空间排序算法的稳定性稳定性:如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变如何选一个通用高效率的
2022-04-26 14:14:36
735
原创 219. 存在重复元素 II
219. 存在重复元素 II题目在文末219. 存在重复元素 II分析滑动窗口(固定大小为k的窗口)代码题目分析这题也是数组的滑动窗口问题反向理解:只要在这个固定的窗口里存在重复元素,就满足题目要求abs(i-j)<=k;如果不存在就一直移动窗口滑动窗口(固定大小为k的窗口)此题目与209题不同的是,这次是要维护一个固定大小(k)的窗口如果窗口内有目标值就返回true没有则添加进窗口注意的是要维护窗口的长度为k代码class Solution { public boole
2022-04-25 22:06:07
194
原创 209. 长度最小的子数组
209. 长度最小的子数组题目在文末209. 长度最小的子数组思路滑动窗口思路上代码巧妙之处题目思路连续子数组 这不就是暗示滑动窗口吗滑动窗口思路使用start、end指针,分别表示滑动窗口的起始、终止位置移动end指针,扩大窗口,直到子数组达到目标值target移动start指针,缩小窗口,直到子数组不再满足>=target上代码class Solution { public int minSubArrayLen(int target, int[] nums) {
2022-04-24 18:09:00
67
原创 15. 三数之和
15. 三数之和题目在文末15. 三数之和思路双指针图解+思路代码(附有详细注释)题目思路双指针图解+思路首先先对数组进行排序。排序后创建三个指针 如下图核心思想:(如果不好理解可以反着想一下)三数之和小于0,left指针向右移三数之和大于0,right向左移等于0的时候,返回答案之后要立即去重!细节:题目要求没有答案返回空集合,所以要考虑给的数组是否合规去重 时要注意:每次i移动都要给i指针去重;每次找到答案以后,要给left和right去重代码(附有详细注释)class S
2022-04-24 17:56:54
189
原创 977. 有序数组的平方
977. 有序数组的平方题目在文末977. 有序数组的平方思路双指针题目思路暴力解法或者用工具类(Arrays.sort)就不写了,考算法是要自己去实现的双指针分析:这个数组在取平方之前,是有序的,那么它绝对值最大的数一定是在两端的。所以可以定义头尾两个指针,一个指向最左端,一个指向最右端,比较两者平方的大小,大的平方放入结果数组具体细节我都有注释 可以看代码中的注释class Solution { public int[] sortedSquares(int[] nums) {
2022-04-23 13:51:49
64
原创 283. 移动零
283. 移动零题目在文末283. 移动零思路题目思路思路及代码题目思路题目思路一样的原地操作一样的双指针思路及代码在27题的基础上先把非0的移动到前面,交给after记录完成循环以后再把after以后的位置填上0class Solution { public void moveZeroes(int[] nums) { int length = nums.length; int front = 0; int after = 0;
2022-04-23 13:33:22
54
原创 26. 删除有序数组中的重复项
26. 删除有序数组中的重复项题目在文末26. 删除有序数组中的重复项思路题目思路双指针题目思路题目思路数组题目老规矩,原地操作,数组有序直接双指针双指针如果front与前一个元素相同,则front移动。如果不同,则front与after交换,并同时移动。核心思想就是after负责看管不同的元素,如果front扫描到前一个和自己相同,那么front将继续向前扫描,直到遇到不同的元素,就与after交换。最终返回afterclass Solution { public int re
2022-04-23 13:27:35
68
原创 22应届生开始创作了
我开始写文章了!目录我开始写文章了!先自我介绍一下吧原创情结出路驻扎CSDN一直没有发任何东西,因为见过大佬们各式各样的原创,本想着不说博览群书,但也想要在工作中用到过或者看过源码看过书才算是原创。现在才知道这是原创情结,后面会说先自我介绍一下吧我是22届Java,今年确实不好找校招,各路都不收,面试机会都少之又少,每天被八股文什么的摧残,心气越来越低昨日与k佬交谈,k佬让我使用决策树为自己人生规划,还有什么蒙特卡洛算法… 我确实没听懂 我也确实百度了 可是我确实对别的行业不感兴趣 自己也已经付出
2022-04-22 23:55:08
3124
原创 27. 移除元素
27. 移除元素题目贴在文末27. 移除元素思路双指针题目思路当初我第一反应是合情合理的直接遍历删- -可是数组删元素 必然涉及到元素的迁移 时间复杂度可想而知哦暴力代码就不贴了 直接说改进后的双指针前后两个指针:front和afterfront是找元素的,after负责盯元素,如果当前元素是需要删除的元素,那么front向前移动,after等候。如果front当前元素是不需要删除的,那么就把front的值赋给after,然后一起向后移动一格。核心思想就是front不断移动,把不需要删除
2022-04-22 23:19:04
73
原创 11. 盛最多水的容器
11. 盛最多水的容器题目贴在文末11. 盛最多水的容器核心思想题目核心思想长木板向内侧移动,水量一定变少短木板向内侧移动,水量不一定变多既然一定变少 那就不动呗,不一定变多 那就试试呗头尾两个指针,短木板向内移动,计算水量并与最大值做比较class Solution { public int maxArea(int[] height) { int i = 0, int j = height.length - 1 int res = 0
2022-04-22 23:18:44
62
原创 1. 两数之和
1. 两数之和力扣第一题 我不信第一次进力扣的人不看这题 哈哈题很简单 但是我最初的思路是这样的暴力解法 代码不贴了 直接改进:public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> map = new HashMap<>(); int[] result = new int[2]; for (int i = 0; i < nums.length; i++
2022-04-22 23:18:05
78
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人