![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
每日一练
每日一练
你好啊cbw
这个作者很懒,什么都没留下…
展开
-
力扣_3_无重复字符的最长子串_medium_20220402_2
原创 2022-04-07 18:02:38 · 497 阅读 · 0 评论 -
力扣_3_无重复字符的最长子串_medium_20220402
原创 2022-04-07 18:01:54 · 185 阅读 · 0 评论 -
力扣_1004_最大连续1的个数_III_medium_20220402
原创 2022-04-07 18:00:48 · 419 阅读 · 0 评论 -
力扣_209_最小长度的子数组_medium_20220401
原创 2022-04-07 17:59:40 · 183 阅读 · 0 评论 -
力扣_684_冗余连接_medium_UnionFindSets_20220330
原创 2022-04-07 17:55:41 · 150 阅读 · 0 评论 -
力扣_200_岛屿数量_DFS_medium_20220331
原创 2022-04-07 17:54:35 · 87 阅读 · 0 评论 -
力扣_200_岛屿数量_BFS_medium_20220331
原创 2022-04-07 17:53:27 · 107 阅读 · 0 评论 -
力扣_200_岛屿数量_UnionFind_medium_20220331
原创 2022-04-07 17:52:36 · 100 阅读 · 0 评论 -
力扣_547_省份数量_medium_20220330
原创 2022-04-07 17:46:12 · 126 阅读 · 0 评论 -
力扣503. 下一个更大元素II mediumn 20220329
/**力扣503. 下一个更大元素II mediumn 20220329 给定一个循环数组nums(nums[nums.length - 1]的下一个元素是nums[0]),返回nums中每个元素的 下一个更大元素。 数字 x的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。与I相比,如果当前元素右侧没有比它大的,那么需要去它的左侧找到第一大于它的元素 思路: 方式一:直接两层for循环.原创 2022-03-29 15:06:49 · 433 阅读 · 0 评论 -
力扣739:每日温度 medium 20220329
/**力扣739:每日温度 medium 20220329 * 给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指在 * 第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0 来代替 * * 示例 1: * 输入: temperatures = [73,74,75,71,69,72,76,73] * 输出: [1,1,4,2,1,1,0,0] * 示例 2: * 输入: temperatures = [30.原创 2022-03-29 14:07:51 · 390 阅读 · 0 评论 -
力扣496 下一个更大元素 I easy 20220328
方法一:暴力破解三层循环遍历①第一层遍历nums1,获取当前元素e②第二层遍历num2,找到当前元素e在num2中的位置index③第三层,从index开始遍历num2,找到第一个大于e的元素方法二:栈+哈希表1.栈:用来排查当前元素右侧第一个最大元素①倒序遍历num2数组元素{②判断栈是否为空,为空则表示当前元素右侧没有比它大的值,直接map记录当前元素右侧第一个最大元素为-1,并将当前元素入栈。 ③如果栈不为空,并且当前元素大于...原创 2022-03-28 16:04:01 · 692 阅读 · 0 评论 -
归并排序 medium 20220129
5 9 6 2 4 35 9 6 2 4 35 9 6 2 4 ...原创 2022-01-29 10:36:24 · 559 阅读 · 0 评论 -
力扣912 排序数组 medium 20220128
给你一个整数数组 nums,请你将该数组升序排列。public static int[] sortArray(int[] nums) { quickSort(nums,0,nums.length-1); return nums; } public static void quickSort(int[] arr,int start,int end){ if (start>=end) return; int..原创 2022-01-28 14:04:19 · 276 阅读 · 0 评论 -
力扣215. 数组中的第K个最大元素 medium 20220128
力扣215. 数组中的第K个最大元素 medium 20220128题目描述: * 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 * 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例: * 输入: [3,2,1,5,6,4] 和 k = 2 * 输出: 5思路1: * 使用快排将数组排序,然后从后开始找到第k个数即可public static void .原创 2022-01-28 10:51:59 · 197 阅读 · 0 评论 -
快速排序 QuickSort easy20220127
* 思路:* 找到左右端点,从左右端点分别循环,找到比第一个元素a大和小的两个元素,交换,一轮跑完后,* 比a大的元素都在a的右侧,比a小的元素都在a左侧,然后根据a将数组切成两段,分别继续快排public static void quickSort(int[] arr,int start,int end){ if (start>=end) return; int p=arr[start]; int left=st...原创 2022-01-27 16:46:28 · 169 阅读 · 0 评论 -
插入排序 InsertSort 20220127
插入排序思路: 从第二个元素开始遍历,如果当前元素比其前一个元素小,那么前一个元素后移一位, 此时空出一个位置,再往前比较,如果比当前元素大,那么空出的位置就是当前元素要插入的位置, 否则将与当前元素比较的元素后移一位,也就是空出的位置又向前移动一位,以此类推, 当满足条件时,就将当前元素插入到空出的位置中。 1 9 6 2 4 3 1 9 (9>1则继续下一循环,也就是6) 1 9(6<9,所以将9后移一位,空出一个位.原创 2022-01-27 15:09:06 · 173 阅读 · 0 评论 -
选择排序 SelectSort easy 20220127
* 冒泡* 插入* 选择* 归并* 快速快排和归并是最重要的* 基数* 桶排**考虑因素有很多:* 复杂度分析* 比较和交换次数分析* 内存分析(是否需要额外新增内存空间)* 稳定性 (同一个数会发生交换,比如数值相同两个值1 2 4 2 那么排序后1 2 2 4 第一个2还是原来的第一个2,而不是最后那一个2)** 时间复杂度 稳定性 最好 最坏 平均 原地排序(需要额外新增内存空间)* 冒泡 Y O(n2) .原创 2022-01-27 14:11:46 · 282 阅读 · 0 评论 -
冒泡排序 BubbleSort easy 20220127
* 思路:* 横向:n个元素,只需要跑n-1趟,最后一趟只剩一个数,不需要比较* 竖向:n个元素,只需要比较n-1-i次,减i是因为最后i个数已经排好序了,减1是因为这里是和下一个数比较public class BubbleSort { public static void bubbleSort(int[] array){ for (int i=0;i<array.length-1;i++){ //最后一趟只剩一个数,不需要比较 .原创 2022-01-27 11:42:32 · 337 阅读 · 0 评论 -
力扣154 Find Min In Rotated Sorted ArrayII 在旋转数组中寻找最小值 hard 20220126
力扣154 Find Min In Rotated Sorted ArrayII 在旋转数组中寻找最小值 hard 20220126题目描述: * 给你一个可能存在 重复 元素值的数组 nums ,它原来是一个升序排列的数组,进行了多次旋转后。请你找出并返回数组中的 最小元素 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4} 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7] 方法一:暴力法方法二:二分法和暴力法相结合...原创 2022-01-26 17:04:50 · 5359 阅读 · 0 评论 -
力扣153 Find Min In Rotated Sorted Array 在旋转数组中寻找最小值 medium 20220125
力扣153 Find Min In Rotated Sorted Array 在旋转数组中寻找最小值 medium 20220125题目描述: * 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: * 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] * 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] * 注意,数组 [a[0], a[1], .原创 2022-01-26 15:44:54 · 742 阅读 · 0 评论 -
力扣33:Search In Rotated Sorted Array 搜索旋转排序数组 20220124 medium
力扣33:Search In Rotated Sorted Array 搜索旋转排序数组 medium题目描述:1.整数数组 nums 按升序排列,数组中的值 互不相同2.在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2.原创 2022-01-24 14:52:37 · 595 阅读 · 0 评论 -
力扣445 Add Two Number 两数相加 medium 20220120
/**力扣445 Add Two Number 两数相加 medium * 题目描述: * 给你两个 非空 链表来代表两个非负整数。 * 数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表 * 示例: * 输入:l1 = [7,2,4,3], * l2 = [5,6,4] * 输出: [7,8,0,7] * 思路: * 将l1和l2链表翻转后,相加,最后将新链表翻转 */p..原创 2022-01-20 14:54:50 · 88 阅读 · 0 评论 -
力扣2 Add Two Number 两数相加 medium 20220120
力扣2 Add Two Number medium 题目描述: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的, 并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7.原创 2022-01-20 14:02:59 · 347 阅读 · 0 评论 -
力扣 138 List With Random Pointer 深度拷贝带随机指针的链表 20220118 medium
力扣 138 Copy List With Random Pointer 深度拷贝带随机指针的链表原创 2022-01-18 00:31:06 · 187 阅读 · 0 评论 -
力扣 92 Reverse Linked ListII 翻转区间链表 20220117 medium
链表翻转:指定区间[m,n]节点翻转1->2->3->4->5只翻转第2个节点到第4个节点之间的链表思路: 1.在head前添加哨兵节点dummy 2.将head挪到dummy 3.for循环移动head,找到左端点prevM 4.初始化变量 * 左端点prevM就位,通过for循环找到 * 翻转区间头结点mNode就位,通过左端点prevM确定,mNode不需要移动,翻转结束只需要连上右端点 * 翻转区间尾结点nNode就位,即为翻转区间头结点mNode.原创 2022-01-17 17:31:54 · 241 阅读 · 0 评论 -
力扣206 Reverse Linked List easy 翻转链表 20220114 easy
1->2->3->4->55->4->3->2->1思路:单链表是不能回头的,只能找到当前节点的next,所以这里需要两个变量current记录当前节点,prev记录当前节点的上一个节点,循环往后移动这两个变量,每循环一次就翻转当前节点,直到当前节点为null,翻转结束,此时prev指向最后一个节点,也就是翻转后的第一个节点。1------------>2-------->3------>4------>5h...原创 2022-01-15 18:34:39 · 241 阅读 · 0 评论 -
20211025二分查找-第一个错误的版本_easy
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例 1:输入:n = 5..原创 2021-10-25 15:40:54 · 83 阅读 · 0 评论 -
20211025二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1class Solutio...原创 2021-10-25 15:12:54 · 2450 阅读 · 0 评论 -
20210627统计字符串中每一个字符出现的次数
* 思路:* 1:使用Scanner获取用户输入的一个字符串* 2:下面使用HashMap集合以键值对记录每个字符及对应的数量* 3:首先需要遍历字符串,获取每一个字符,由两种方式:* i.String类的toCharArray方法,把字符串转换为数组,遍历数组即可。* ii.String类的length方法加上charAt(索引)来获取每一个字符。* 4:使用Map集合中方法判断获取到的字符串(key)是否存储在Map集合中...原创 2021-06-27 23:47:32 · 113 阅读 · 0 评论 -
5.习题
package demo5;/* * 1、查找某个整数 * 定义一个长度为 10 的整型数组 nums ,循环输入 10 个整数。 然后将输 入一个整数,查找此整数,找到输出下标, 没找到给出提示。 2、找出数组的最值 定义一个长度为 10 的整型数组 nums ,循环输入 10 个整数。输出数组 的最大值、最小值。 3、两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为 目标值的那两个整数,并输出他们的数组下标..原创 2021-02-01 23:44:12 · 127 阅读 · 0 评论 -
4.无重复字符的最长子串_medium_20210124
4.无重复字符的最长子串_medium_202101244.1.问题描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 4.2.解法一:暴力循环要求子串最长且不重复,可以两层循环遍历出所有子串,然后自定义函数判断每一个子串是否含重复字符,重复则判断下一个子串,不重复则更新子串长度len. 如何判断子串字符是否重复:取出每一个字符存入...原创 2021-01-24 22:27:34 · 83 阅读 · 0 评论 -
3.选队长_easy_20210124
3.选队长_easy_202101243.1.任务描述 今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举一个人作为出游的临时队长。为了体现合理公平,大家提出了一个比较有趣的规则。所有人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,剩下的人继续报数,最后留下的当选为队长。请你通过编写程序,求出一组人中的队长是原来第几位同学。 3.2.思路数组作为容器,count作为计数器,每当count值为3则调用kickOff方法剔除相应的同学原创 2021-01-24 03:41:28 · 180 阅读 · 0 评论 -
2.两数相加_medium_20210123
2.两数相加2.1.问题描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0开头。 ...原创 2021-01-23 00:24:34 · 93 阅读 · 0 评论 -
1.两数之和_简单_20210122
1.两数之和1.1.题目描述给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 1.2.解法一:暴力循环两重循环,遍历所有情况看相加是否等于目标和。 时间复杂度:两层 for 循环,O(n²) 空间复杂度:O(1)public int[] twoSum(int[] nums, int target) { ...原创 2021-01-22 22:40:49 · 113 阅读 · 1 评论