
OJ刷题日记
文章平均质量分 96
懒懒学c
一个自学编程的爱好者
展开
-
OJ刷题日记:6、二分查找(2)
如这题所示,可以直接使用暴力、位预算等等,但是这个章是二分,所以这里就利用二分了,这个就可以看到当坐标不等与当前坐标的值的时候,就是左边少了,所以这里就去左边找,相等就去右边找,然后就可以得出,但是当我提交的时候,发现出错了,我查了一下,发现是因为有那种有序,就是0 1 2 3 这种,所以还需要判断一下是否等于当前坐标的值如果等于直接+1,代码如下。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。原创 2024-04-22 23:29:02 · 751 阅读 · 2 评论 -
OJ刷题日记:5、二分查找(1)
题目:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。示例 1:nums = [[3,4]示例 2:nums = [[-1,-1]示例 3:[-1,-1]nums是一个非递减数组。原创 2024-04-21 09:39:09 · 1067 阅读 · 3 评论 -
OJ刷题日记:4、滑动窗口(2)
先看题目,这题是覆盖,如示例一,只要有一个A一个B一个C的时候,这个就是子串,也就是说中间可以重复,算法思路也就是滑动窗口,这个使用一个128长度的数组进行记录t的字符,也就是记录每个字符出现几次,然后用一个128长度的数组进行维护s的字符,count也是用来维护,和前两题差不多,这里的出窗口条件就是当有效字符等于count的时候进开始进行更新最小的子串长度以及起始地址,然后进行出窗口,在返回就可以了。它是 words 中以 ["the","foo","bar"] 顺序排列的连接。这些树用一个整数数组。原创 2024-04-20 21:45:53 · 1039 阅读 · 4 评论 -
OJ刷题日记:3、滑动窗口(1)
题目:209. 长度最小的子数组 - 力扣(LeetCode)给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。原创 2024-04-18 13:08:05 · 1080 阅读 · 7 评论 -
OJ刷题日记:2、双指针(2)
从上方题目可以看出这个题目相当于求一个面积,面积的长是两个坐标之间的距离,高是两个坐标的数据中短的这个,所以就可以使用双指针算法去求,这里就是直接是利用左右两边的边作为左右指针,然后在创建一个值用来记录最大的面积,在left小于right的时候进入循环,然后进行计算,如果左边坐标的数据比右边坐标的数据小的时候,就进行计算,right-left*坐标小的数据就是这个面积,然后判断之前定义的tmp是否比面积小,如果小就把n的值给给tmp,然后left++,反之一样就是right--,如下方代码所示。原创 2024-04-15 09:13:57 · 1001 阅读 · 2 评论 -
OJ刷题日记:1、双指针(1)
下方代码就是这题的解法,我是利用for循环去遍历找出0的值,如果找到0了,这时就停在这里,然后进行判断,利用两个指针进行判断,一个是j一个是k,j就是当前0的位置,k就是去向下去遍历剩余数组的指针,如果找到不等于0的就和j进行交换,再把k的位置给给j,这样就能找出数组中的0了。然后我就开始从写,想出下方的代码,就是遇到0之后在这个位置插入一个0,然后尾删一个,也就是库函数里面的pop_back()函数 ,代码如下,然后过了。调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]原创 2024-04-11 23:16:39 · 1120 阅读 · 14 评论