把一个有序数组插入到另一个有序数组中,使用双索引逐个判断两个数组中元素的大小往里插入
移除数组内指定元素,只要便利数组逐个删除就可以
删除重复项,考虑到数组为非严格递增,从下标1开始,逐个元素跟前一个元素对比,相等的就删掉
同上但是最多保留两个相同数字,考虑到数组为非严格递增,从下标2开始逐个跟前两个元素对比,相等的就删掉
数组中一定有一个元素的出现的数量是超过 length/2 的,遍历数组统计每个元素出现的次数,就能知道谁出现次数超过 length/2
数组整体右移n位,只要把右移的位数n~结尾切掉放到数组开头就可以
高买低卖,遍历数组只要判断当前索引元素比上个小就重新买,利润高于之前的利润就统计(这个比较抽象)
依旧高买低卖,从下标1开始,跟前一个元素对比,大的话就算利润,小的话就不计入
从第一个数开始往后跳,每跳一位减1,同时跟当前位的数字对比大小,大的话就继续跳,小的话就用当前位数字替换
从后往前看,找到每一次下标最靠前且能跳到结束的位置,往复几次,找到下标为0时就能得到最少跳跃次数,时间复杂度为 O(n²)
从前往后看,从下标为0开始,在步数内比较谁能跳的最远,就跳到对应的下标,直到跳到结尾,时间复杂度为 O(n)
多次遍历列表,每次h增加1,看是否符合条件,知道不符合为止,得出最大h。时间复杂度为 O(n²)
先给数组倒序排序,再根据下标和对应位置的值来判断h,时间复杂度为 O(n)
就正常写,用数组来执行插入删除操作
先计算列表所有元素的积,把0单独统计,再根据每种情况来计算对应位置,不让用除法就用**-1,时间复杂度为 O(n)
先计算左边的积,再计算右边的积,再依次把他们乘到一起,时间复杂度为 O(n)
首先判断总油量一定大于等于总消耗量,不然走不了全程。然后从0累计每个站的(油量-消耗),当出现负数时起始站一定不在范围内,起始站索引设置成下一个位置重新累计
从头开始,逐个跟前一个对比,如果更大在前一个的基础上+1就可以。但是如果更小就复杂了,简单的办法就是把数组反转再处理一遍,如果计算的糖果数量比正着计算的大,就替换
先拿到索引最靠后的最大值。然后从前依次往后对比,拿到局部相对较大的值跟最大值形成一个容器,每次遍历到一个数字就判断在当前位置能接住多少。对比到最大值的索引后再倒着算剩下的,加起来就是结果
从左到右依次累加,如果当前索引的字母代表数字比上一索引字母代表数字更大,就把上一索引字母代表数字减去二倍,再加当前索引
没什么技巧,简单的计算即可
先去除结尾空格,再以空格分割,取最后一个单词长度
从第一个单词的第一个字母开始,挨个单词比较,使用 startwith 方法
先去除两边空格,再以空格把字符串切成数组,遍历数组把有内容的部分从后往前加起来
根据规律,当共有R行时候,每 2R-1 行是一个循环。其中,前R个是从上到下排列的,后R-1个是从下到上排列,根据这个规律列循环即可
字符串从头开始往后,逐段对比是否符合匹配项
先把单词数组拆分成二维数组,确保每个数组是一行,再计算中间要插入多少个空格,最后一行特殊处理
给的字符串逐个字符用isalnum判断是否为字母数字,然后拼接成新字符串,转小写再反转判断是否为同一个
遍历子字符串所有字符,逐个判断是否在父字符串里,返回结果
从两边开始相加,如果和比目标大,就让右边往前移,如果和比目标小,就让左侧往后移,一定有唯一解的情况就不用考虑两个索引碰到一起
用双循环的方式构建,但是遍历次数太多了,超时
用双指针方式,最小的一直变
两个指针放在左右两侧,中间一个在遍历,遇到总数<0,中间指针右移,遇到总数>0,右边指针左移
从第一个开始往后累加,如果总数超过target,就让左边索引+1再计算,如果总数小于target,就让右边索引+1再计算