自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【680. 验证回文字符串 Ⅱ】

题目链接680. 验证回文字符串 Ⅱclass Solution { //判断一个字符串是否是回文串 boolean check(String s,int i,int j){ while(i<j){ if(s.charAt(i) == s.charAt(j)){ i++; j--; }else return false; }

2022-02-22 21:53:35 129

原创 【633. 平方数之和】

题目链接633. 平方数之和class Solution { public boolean judgeSquareSum(int c) { /* 双指针: 1、初始指针 l 指向0,指针 r 指向 sqrt(c) 2、如果 a*a + b*b == c,返回 true 如果 a*a + b*b < c,左指针 l++ 如果 a*a + b*b

2022-02-22 21:36:18 82

原创 【76. 最小覆盖子串】

题目链接76. 最小覆盖子串算法:利用哈希表统计出字符串t中所有字符出现次数,然后两个指针扫描整个字符串;再用一个哈希表统计i-j滑动窗口内每个字符出现的次数:滑动窗口哈希表加入s[i],判断是否是有效元素判断s[j]是否多余,如果是,j指针后移一位如果有效字符个数等于 t 字符串长度,则更新结果,直到遍历结束找到最小子串AC代码:class Solution { public String minWindow(String s, String t) { //1

2022-02-22 21:12:42 173

原创 【142. 环形链表 II】

题目链接142. 环形链表 II关键点:在两个指针第一次相遇时,将慢指针退到头结点的位置,快指针仍位于相遇点处,两个指针相同速度出发,再次相遇时的点即为环形链表的入口点。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null

2022-02-12 21:58:24 166

原创 【141. 环形链表】

题目:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tr

2022-01-07 15:11:21 42

原创 【88. 合并两个有序数组】

题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你合并 nums2 到 nums1 中,使合并后的数组同样按非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 = [1,2,3,

2022-01-07 15:02:42 35

原创 【167. 两数之和 II - 输入有序数组】

题目:给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案 ,而且你不可以重复使用相同的元素。示例 1:输入:numbers = [2,7,11,15], t

2022-01-04 10:25:31 47

原创 【560. 和为 K 的子数组】

题目:给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2算法分析:求连续子数组和为k的个数,即k = s[i] - s[j-1]; s[j-1] = s[i] - k;即为求以i为终点的前缀和减去k之后的前缀和为s[j-1]的个数;用哈希表记录每一个前缀和出现的次数,对于前缀和为0的要赋初值1对于当前前

2021-12-28 20:46:27 110

原创 【关于前缀和模板在数组不同起始坐标时的差异】

一维前缀和:当整数序列下标从1开始时://定义一维前缀和 for (int i = 1; i <= n; i++) { s[i] = s[i - 1] + arr[i]; }//求区间[r,l]内元素和 return s[r] - s[l - 1];当整数序列下标从0开始时://定义一维前缀和 for(int i = 1;i<=nums.length;i++){ s[i] = s[i-1] + nums[i-1]; }//求区间[r..

2021-12-28 19:56:21 109

原创 【304. 二维区域和检索 - 矩阵不可变】

题目:给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角 为 (row1, col1) ,右下角为 (row2, col2)实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回左上角 (row1, col1) 、右下角 (row2, col2) 所描述的子矩阵的元素总

2021-12-28 19:36:56 59

原创 【303. 区域和检索 - 数组不可变】

题目:给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))示例:输入:["NumArray", "sum

2021-12-28 19:07:44 65

原创 【4. 寻找两个正序数组的中位数】

题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2

2021-12-27 21:56:33 272

原创 【540. 有序数组中的单一元素】

题目:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums.length <= 1050 <= nums[i] <= 105算

2021-12-24 12:21:36 374

原创 【154. 寻找旋转排序数组中的最小值 II】

题目:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个可能存在 重复 元素值

2021-12-23 18:18:14 107

原创 【153. 寻找旋转排序数组中的最小值】

题目:已知一个长度为 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], a[2], ..., a[n-1]] 旋转一次的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个元素值互不相同 的数组

2021-12-23 18:15:25 43

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

题目:整数数组 nums 按升序排列,数组中的值互不相同 。在传递给函数之前,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,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你旋转后的数组 nums 和一个

2021-12-23 12:14:13 433

原创 【81. 搜索旋转排序数组 II】

题目:已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,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,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4] 。

2021-12-22 19:48:33 246

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

题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], target = 0输出:[-1,-1]提示:0 <=

2021-12-22 15:27:17 82

原创 【69. Sqrt(x)】

题目:给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。提示:0 <= x <= 231 - 1方法一:利用模板1模板1:while (l &

2021-12-21 22:02:12 494

原创 【75. 颜色分类】

题目:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]提示:n == num

2021-12-03 21:53:25 63

原创 【451. 根据字符出现频率排序】

题目:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:"Aabb"输出:

2021-12-03 21:14:33 101

原创 【347. 前 K 个高频元素】

题目:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]方法一:计数排序HashMap统计出数组中各元素出现的次数建立一个新的数组 s[i],用于存储出现了 i 次的元素有多少个从后往前遍历 s[i] 数组,当元素个数累加到 k 个时停止此时再根据停下时对应的次

2021-12-03 15:12:02 110

原创 【215. 数组中的第K个最大元素】

题目:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4方法一:快速排序1.快排:选择一个点x,将数组分为左边大于x,右边小于x2.判断第k个最大的元素位于哪个区间内3.递归排序第k个最大元素所在区间class Solution

2021-12-02 15:03:21 80

空空如也

空空如也

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

TA关注的人

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