- 博客(12)
- 收藏
- 关注
原创 6.搜索插入位置(力扣35)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5输出: 2。输入: nums = [1,3,5,6], target = 2输出: 1。输入: nums = [1,3,5,6], target = 7输出: 4。例 1:「力扣」第 35 题:搜索插入位置。
2024-12-25 22:25:07
342
原创 4.二分查找(力扣704)
否则,中间位置的元素比目标元素严格大,依然是由于整个数组是有序的,中间位置以及中间位置的右边的所有元素的数值一定比目标元素大,那么下一轮搜索就应该在 [left, mid - 1] 左闭右闭这个区间里查找,这个时候我们将右边界 right 的值设置为 mid - 1。表示这个区间需要两个变量,那就是数组里区间的左右边界,分别用变量 left 和 right 表示,一开始的时候,左边界的值等于 0,右边界的值等于数组的长度减1。这里应用的是二分查找算法的思路 1,在循环体中找到了元素就直接返回;
2024-12-22 22:24:37
226
原创 算法基础练习:3.计算矩阵平均值
给定一个二维数组矩阵,取每一个值的8个方向加上数字本身的平均值,结果向下取整,输出平均值的和。示例1: 输入:matrix=[[3,1,2],[4,7, 0],[8,9,5]] 输出:37。第一步:计算一个随机位置的每个方向加上数字本上的平均值,向下取整。第二步:遍历二维数组矩阵,输出每个每个随机位置对应的坐标。第三步,结合第一、二步,进行求和。
2024-12-21 15:28:33
231
原创 算法基础练习:2.最小公倍数&最大公约数
这段代码的逻辑是正确的,但是它并不是计算最小公倍数的最高效方法。它通过遍历可能的最小公倍数候选数(从较大的数开始,每次增加较大的数,直到两数的乘积),检查每个候选数是否是较小数的倍数。一旦找到第一个符合条件的数,就认为它是最小公倍数,并结束循环。这种方法的时间复杂度是O(n),其中n是较大数与两数乘积之间的差距。对于较大的数,这种方法可能会非常慢。这段代码首先定义了一个计算最大公约数的函数gcd,然后使用这个函数来计算 a 和 b 的最小公倍数,并打印结果。这种方法的时间复杂度更好,特别是对于较大的数。
2024-12-21 15:23:28
115
原创 算法基础练习:1.冒泡排序
当内层循环完成一次遍历后,最大的元素会“冒泡”到它应该在的位置,即列表的末尾。这个过程会重复进行,直到整个列表被排序。最后,打印出排序后的列表。这段代码通过两层循环实现了冒泡排序算法,外层循环控制排序的总轮数,内层循环在每一轮中进行相邻元素的比较和交换。
2024-12-21 15:20:02
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人