- 博客(93)
- 收藏
- 关注
原创 69. x 的平方根
给你一个非负整数x,计算并返回x的。由于返回类型是整数,结果只保留,小数部分将被不允许使用任何内置指数函数和算符,例如或者x ** 0.5。x = 42x = 828 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
2023-09-25 19:56:19 103
原创 40. 组合总和 II
给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用。解集不能包含重复的组合。
2023-09-17 16:48:46 79
原创 39. 组合总和(暴力DFS)
给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。[2,3,6,7],target =72 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。7 也是一个候选, 7 = 7。仅有这两种组合。
2023-09-17 16:05:36 144 1
原创 37. 解数独
本题要求我们填数独,最重要的就是当我们填写某个位置的时候要知道她还能填几,要分情况,就类似于一棵树,所以我们采用dfs搜索的方式。首先定义三个bool数组row,col,cell来对应三个规则。先遍历整个表一次,根据表里面已经有数据的位置将对应的bool数组置为true,随后开始dfs。dfs部分是一个递归的函数,输入参数要包含对应的位置,函数的主要功能就是确定这个位置有没有符合规则的数填进去,没有则说明数独无解,否则就填入数据并更改对应的bool值。编写一个程序,通过填充空格来解决数独问题。
2023-09-12 12:45:11 65
原创 36. 有效的数独
请你判断一个9 x 9的数独是否有效。只需要,验证已经填入的数字是否有效即可。1-91-91-93x3'.'board =trueboard =false除了第一行的第一个数字从改为以外,空格内其他数字均与 示例1 相同。但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。
2023-09-12 10:51:49 106
原创 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。
2023-09-10 18:25:09 119
原创 33. 搜索旋转排序数组
本题主要难点在于控制时间复杂度在logn上,所以不可以直接遍历整个数组,或者先sort排序。观察题目,已知数据原先是升序的,经过旋转之后变成两段升序的排列了,这个时候我们只需要 先判断target可能在那一段升序序列中,就可以减少一般的比较次数了!只需要将其与nums[0]进行比较,target > nums[0]说明其一定在第一个升序排列中,反之就一定在第二个升序排列在,这里要注意的是,第二个排列的对比应当从末尾往前遍历。,则返回它的下标,否则返回。按升序排列,数组中的值。在预先未知的某个下标。
2023-09-10 16:20:43 26
原创 31. 下一个排列 (字典序法)
对于本题来说,就是从右到左寻找第一个破坏升序的数nums[pos - 1], 然后在遍历过的数里寻找比该数大的最小的一个,所例如遍历过的数为[7,6,4,3], nums[pos - 1]为5, 则5需要与6进行交换, 那么这时候如何找到6呢?如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的。刚学的组合数学知识正好用到,生成算法中的字典序法。
2023-09-09 16:25:34 91
原创 16. 最接近的三数之和
回想一下之前的处理,我们比较喜欢排序好的数组,所以我们先使用sort进行排序,三数之和的时候我们是先确定一个值,然后剩下的两个值通过求两数之和的思路来确定,借鉴这种思想,我们先确定一个i即nums[i]的值,left从i +1开始,right从n - 1开始,记录三者之和sum存到ans中。本题类似于求三数之和的问题,首先双指针肯定跑不了,但需要考虑的是,在每次找到一个组合的时候都要比较其和与target的差值,并记住最小的一个当做最后的输出。中选出三个整数,使它们的和与。假定每组输入只存在恰好一个解。
2023-09-09 15:34:30 31
原创 18. 四数之和(使用三数之和的思想)
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。
2023-09-09 14:56:38 43
原创 15、三数之和---引申出2sum--100sum问题解法
3sum问题可以借助twosum问题来理解。三个数的和为0,我们可以首先确定一个数x,那剩下的两个数要做到与这个数的和为0,就转化为了twosum问题,即求两个数之和为-x就可以了。传入参数部分要改一改,多传入一个变量begin,令left从begin开始。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。这种方式在力扣竟然超时!注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,留作参考吧,后期再优化。
2023-09-07 18:07:05 42
原创 167. 两数之和 II - 输入有序数组 (引申出带有重复情况)
接下来只需要解决重复的问题即可,出问题的地方在于 sum == target 条件的 if 分支,当给 res 加入一次结果后,left和 right 应该在改变 1 的同时跳过所有重复的元素:只需要使用一个while循环即可,需要注意的是要始终保持left < right。对于这个问题,题目说明了仅存在一个有效答案,就不需要考虑最后得到的数组重复问题了,首先考虑暴力解法,即弄两个for循环遍历就可以了,但时间复杂度高,且没有用到数组有序这一总要信息,那么这种twosum问题如何优化呢?
2023-09-07 17:06:13 78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人