刷题
JohnArchie
努力努力再努力
展开
-
打家劫舍问题1、2、3(动态规划、递归)
一、打家劫舍1你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1] 输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:原创 2020-08-05 12:21:44 · 1127 阅读 · 0 评论 -
leetcode 力扣 658 找到 k 个最接近的元素
题目:给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例 1: 输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2: 输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3,4]说明:k 的值为正数,且总是小于给定排序数组的长度。数组不为空,且长度不超过 104数组里的每个元素与 x 的绝对值原创 2020-07-25 14:07:23 · 244 阅读 · 0 评论 -
leetcode力扣 34题 在排序数组中查找元素的第一个和最后一个位置
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-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]第一个出现的位置:左边不是target右边是target。最原创 2020-07-25 13:45:01 · 295 阅读 · 0 评论 -
leetcode 力扣 35.搜索插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1: 输入: [1,3,5,6], 5 输出: 2示例 2: 输入: [1,3,5,6], 2 输出: 1示例 3: 输入: [1,3,5,6], 7 输出: 4示例 4: 输入: [1,3,5,6], 0 输出: 0一、采用模板 2需要查看 当前位置 和 右边位置,采用模板 2 ,因为如果不存在,要插入的位置是尽量靠右的。另原创 2020-07-25 12:26:18 · 157 阅读 · 0 评论 -
leetcode力扣 278.第一个错误的版本
题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例: 给定 n = 5,原创 2020-07-25 11:55:33 · 198 阅读 · 0 评论 -
leetcode 力扣 162.寻找峰值
题目:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1: 输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2: 输入:nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可原创 2020-07-25 11:48:38 · 214 阅读 · 0 评论 -
leetcode力扣153题.寻找旋转排序数组中的最小值
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1: 输入: [3,4,5,1,2]输出: 1示例 2: 输入: [4,5,6,7,0,1,2]输出: 0分析:可以用的方法有三种:无脑遍历;排序;二分。显然时间复杂度最小的就是二分法。一、使用模板的写法模板总结以及解释链接:二分查找简介、二分查找的三类原创 2020-07-25 11:03:34 · 217 阅读 · 0 评论 -
leetcode力扣33.搜索旋转排序数组
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2: 输入: nums = [4,5,6,7,0,1,2], tar原创 2020-07-25 10:52:11 · 141 阅读 · 0 评论 -
leetcode力扣 374 猜数字大小
题目:我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!示例 :输入: n = 10, pick = 6输出: 6除了调接口,这就是一个标准的基础二分查找。使用模板一。模板来源:二分查找简介、二分查找的三类原创 2020-07-24 22:12:49 · 168 阅读 · 0 评论 -
leetcode力扣69. x 的平方根
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。题目意思很简单,调库函数肯定不行,那么就能想到二分。因为我们要的结果总是左边界意思就是比如 5 的开方,2平方小,3平方大了,我们希望要的结果是 2 ,那么就是总要在左半部分更新答案原创 2020-07-24 22:07:31 · 197 阅读 · 0 评论 -
二分查找简介、二分查找的三类模板总结,以及对应类型的算法题练习合集
声明:模板的内容来源于力扣的探索章节,加上了自己的理解后的修改以及注释0、介绍二分查找是一种在每次比较之后将查找空间一分为二的算法。每次需要查找集合中的索引或元素时,都应该考虑二分查找。如果集合是无序的,我们可以总是在应用二分查找之前先对其进行排序。二分查找一般由三个主要部分组成:预处理 —— 如果集合未排序,则进行排序。二分查找 —— 使用循环或递归在每次比较后将查找空间划分为两半。后处理 —— 在剩余空间中确定可行的候选者。先来看一个最基本的二分查找题目:给定一个 n 个元素有原创 2020-07-24 21:48:04 · 226 阅读 · 0 评论 -
剑指 Offer 57 - II. 和为s的连续正数序列 三种方法,滑动窗口和数学法详解
题目:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9 输出:[[2,3,4],[4,5]]示例 2:输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <= 10^5来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob原创 2020-06-30 19:48:09 · 287 阅读 · 0 评论 -
一次编辑(只需要插入、删除或替换)的字符串
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = “pale”second = “ple”输出: True示例 2:输入:first = “pales”second = “pal”输出: False分析没什么好分析的,题目很直接。一、分开思路既然题目已经说了:插入一个字符、删除一个字符 或者 替换一个字符,那么直接按照这种思路写额外的三个方法。插入 和.原创 2020-06-17 17:19:59 · 801 阅读 · 0 评论 -
剑指Offer 圆圈中剩下的数字(孩子们的游戏)(暴力法&数学法),约瑟夫环问题
题目:0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:1 <= n <= 10^51 <= m <= 10^6分析做这道题之原创 2020-06-16 21:07:25 · 178 阅读 · 0 评论 -
LeetCode力扣 1300题:转变数组后最接近目标值的数组和(二分查找)
题目:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9原创 2020-06-14 22:11:56 · 215 阅读 · 0 评论 -
剑指offer面试题25 :合并两个有序链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000一、迭代思路不用说,选两个链表的头结点中 val 较小的,然后移动相应的链表指针,一直到结束;需要注意的是结果用一个 listNode 保存之后,指向结果的这个指针也移动到next,一直到了最后。所以最好准备另一个指原创 2020-06-14 22:02:11 · 192 阅读 · 0 评论 -
力扣LeetCode56题: 合并区间(Arrays.sort()方法的扩展使用)
题目:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。分析:题目看起来还是挺简单的一个题目,就是要求并区间,数学里面我们都知道怎么做。那如果对于示例 1 和示原创 2020-06-13 20:56:56 · 376 阅读 · 0 评论 -
剑指offer 面试题24:反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000一、迭代选值,next之后插到前面。public class ListNode{ int val; ListNode next; ListNode(int x){原创 2020-06-13 16:47:41 · 205 阅读 · 0 评论 -
编写一个 SQL 查询,查找所有至少连续出现三次的数字
题目如下:编写一个 SQL 查询,查找所有至少连续出现三次的数字。+----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 || 6 | 2 || 7 | 2 |+----+-----+例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。+-----------------+| ConsecutiveNums |+-原创 2020-06-12 19:47:26 · 3642 阅读 · 0 评论 -
力扣LeetCode 739题:每日温度(单调栈)
题目:根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。分析:题目的意思应该叫做“对于数组的每一个原创 2020-06-12 19:39:53 · 330 阅读 · 0 评论 -
LeetCode 力扣 3.无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。从原创 2020-06-10 23:43:14 · 769 阅读 · 0 评论 -
实现一个算法,确定一个字符串 s 的所有字符是否全都不同(两种方法)
题目:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。一、双循环牺牲时间不使用额外的数据结构,所以计数的方法不能用。这种情况来说,容易想到的就是牺牲时间换空间,第一种方法就是用双循环来代替额外的数据结构。内外循环都遍历整个字符串,然后对比是否除了自身之外还有别原创 2020-06-10 22:46:23 · 4476 阅读 · 0 评论 -
LeetCode力扣990题:等式方程的可满足性(并查集详解)
题目:给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满足第二个方程。没有办法分原创 2020-06-09 13:42:40 · 742 阅读 · 0 评论 -
剑指Offer 面试题15 二进制中 1 的个数(三种方法:字符转换,位运算,以及bitCount方法源码分析)
题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 000000原创 2020-06-07 22:19:17 · 420 阅读 · 0 评论 -
力扣LeetCode 128题:最长连续序列
题目:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。分析要找 连续序列 的长度,从结果可以看出,主要是为了排序,排序之后,遍历结果就可以进行连续长度的更新。但是排序的算法,即使快排的时间复杂度也有O(nlogn),不满足要求。这种时候一般就会想到借助哈希表,也就是类似计数排序,先来试试,用数组来做哈希表,下标做n原创 2020-06-07 10:15:14 · 1211 阅读 · 0 评论 -
剑指Offer:面试题14(1)和(2),剪绳子(动态规划思路详解)
题目1:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]*k[1]*…*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1示例 2: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3原创 2020-06-05 22:16:23 · 343 阅读 · 0 评论 -
剑指Offer面试题29:顺时针打印矩阵(划分每次拐弯起止的方式很重要)
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].length <原创 2020-06-05 21:18:35 · 117 阅读 · 0 评论 -
力扣LeetCode 837题:新 21 点(超详解排列组合的坑,我可以,你也可以)
题目:爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例 1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例 2:输入:N原创 2020-06-04 19:57:50 · 835 阅读 · 0 评论 -
剑指Offer 面试题 12: 矩阵中的路径(DFS做法,超详解)
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的 3×4 的矩阵中包含一条字符串 “bfce” 的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串 “abfb” 的路径,因为字符串的第一原创 2020-06-03 17:19:44 · 246 阅读 · 0 评论 -
剑指Offer面试题64:求1+2+……+n(花里胡哨的)
题目:求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000第一眼看过去:我不敢相信这居然被划分到中等难度的题……这是低估我们的背公式能力吗。return n*(n+1)/2 不就行了吗然后我仔细看了一下题目要求,发现我题目都没看清楚。要求不能使用乘除法、for、wh原创 2020-06-03 15:51:06 · 171 阅读 · 0 评论 -
力扣LeetCode 101:对称二叉树(递归&等价替换迭代)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?既然题目已经说了用迭代和递归两种方法,那就用这两种原创 2020-06-01 17:14:56 · 187 阅读 · 0 评论 -
力扣LeetCode 84题:柱状图中最大的图形(暴力&单调栈详解)
题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10一、暴力法矩形面积 = 宽 * 高。矩形的宽是不一定的,但是矩形的高是可以固定的。因为给定的数组里的值,就是这个矩形可能的,所有的高。因此第原创 2020-05-31 14:59:17 · 553 阅读 · 0 评论 -
剑指Offer面试题07:重建二叉树(根据前序遍历和中序遍历还原树)
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3/ \9 20/ \15 7限制:0 <= 节点个数 <= 5000一、二叉树的遍历(复习)首先,二叉树的前序,中序,后续遍历在数据结构里学习过。前序遍历的顺序是:中 左 右;原创 2020-05-30 09:48:22 · 267 阅读 · 0 评论 -
力扣LeetCode 198题:打家劫舍(动态规划)
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输原创 2020-05-29 19:53:25 · 263 阅读 · 0 评论 -
力扣LeetCode 394题:字符串解码(栈,递归)
题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = “3[a]2[bc]”, 返回 “aaabcbc”.s = “3[a2原创 2020-05-29 16:51:45 · 643 阅读 · 0 评论 -
剑指Offer面试题06:从尾到头打印链表(四种方法)
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000题目看起来是没什么难度的。一、数组存储,再对数组逆序返回/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(i原创 2020-05-29 14:27:34 · 436 阅读 · 0 评论 -
剑指Offer面试题05:替换空格(三种方法。。吧)
题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000一.StringBuilder之前关于字符串的操作已经复习过很多次,在处理字符串的时候尽量要用StringBuilder或者StringBuffer来操作,他们两个是可变字符串,其中StringBuilder线程不安全。String类和常量池简介由于给的是String原创 2020-05-27 19:57:50 · 233 阅读 · 0 评论 -
力扣Leetcode第974题:和可被K整除的子数组(前缀和)
题目描述:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <原创 2020-05-27 17:42:43 · 784 阅读 · 0 评论 -
力扣Leetcode第560题:和为k的子数组(前缀和及其优化)
题目描述:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7,1e7]题目很容易理解,类似于从所有的排列组合里面,找到符合要求的部分.一.暴力穷举暴力法是非常容易想到的, 由于子数组是连续的,只要双重循环,就原创 2020-05-27 12:39:18 · 1326 阅读 · 0 评论 -
Leetcode力扣287题:寻找重复数(二分法和Floyd判圈算法)
寻找重复数昨天刚刚做了剑指Offer的面试题03,今天遇到一个类似的题目,也是找重复的问题.题目:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数原创 2020-05-27 00:03:46 · 727 阅读 · 0 评论