leetcode编程题2

674.最长连续递增序列 


原文链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/



思路分析:
   对于一个数组,将第一个元素于第二个元素对比,如果第二个元素大于第一个元素count加1,否则令count=1,从头计数;然后第二个元素与第三个元素对比,直至对比完整个数组。每次对比结束如果count至大于m,就将count赋给m,否则将m赋给m,保证m的值是最大的连续递增序列次数。考虑特殊情况数组为一个元素,没有元素时它的次数就是数组长度。

代码:
 

class Solution {
    public int findLengthOfLCIS(int[] nums) {
           if(nums.length==0||nums.length==1){
                 return nums.length;
           }
            int count=1;
            int m=1;
            for(int i=0;i<nums.length-1;i++){
             if(nums[i]<nums[i+1]){
                   count++;
                } else{
                       count=1;
                     }
                     m=count>m?count:m;
               }
             return m;
   }
}

66.加一


原文链接:https://leetcode-cn.com/problems/plus-one/



思路分析:
  对于数组来说将最后一个元素取出,然后加一。如果和为0~8则将这个和继续赋值给数组最后一个元素,如果为9,加1后为10向前进1。定义一个carry来控制是否进位,carry=1时循环继续,carry=0则结束循环。如果数组元素都为9则循环运行结束carry依旧=1,此时扩充数组,并令第一个元素为1即可。

代码:
 

class Solution {
    public int[] plusOne(int[] digits) {
     int carry=1;
     for(int i=digits.length-1;i>=0;i--){
         int num = digits[i] + carry;
         digits[i]=num%10;
         carry=num/10;
         if(carry==0){  
             break;
         }
     }
     if(carry==1){
         int[] arr=new int[digits.length+1];
         arr[0]=1;
         return arr;
      }
     return digits;
    }
}

724. 寻找数组的中心索引


原文链接:https://leetcode-cn.com/problems/find-pivot-index/




 


思路分析:
   首先先对整个数组进行求和,结果赋值给sum。定义两个指针leftsum,rightsum。从左边开始对这个元素有sum减去这个元素左边元素的值为leftsum,rightsum的值为sum减去这个元素的值在减去leftsum。若leftsum=rightsum,则这个元素就是中间索引

代码:

class Solution {
    public int pivotIndex(int[] nums) {
        int sum=0;
        for(int num:nums){
            sum+=num;
        }
       int leftSum=0;
        int rightSum=0;
        for(int i=0;i<nums.length;i++){
            if(i==0){
                leftSum=0;
            }else{
                leftSum+=nums[i-1];
            }
            rightSum=sum-nums[i]-leftSum;
            if(rightSum==leftSum){
                return i;
            }
        }
        return -1;
    }
}

209.长度最小的子数组


原文链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/



思路分析:
  
对于数组 先从头开始进行元素求和,如果和大于等于给的s,这记录此时的这段数组长度,然后令和减去最左边元素的值。若和小于s是使此时的这段数组加以一个元素,也就是使和加上一个值直至和大于s时停止加入,然后将此时这段数组长度与之前相比记录最小的值,一直进行这些操作知道数组走完。

代码:
 

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int len=0;
        int i=0;
        int sum=0;
        for(int j=0;j<nums.length;j++){
            sum+=nums[j];
            while(sum>=s){
                len=len==0?(j-i+1):Math.min(len,j-i+1);
                sum-=nums[i];
                i++;
            }
        }
        return len;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LeetCode是一个著名的在线编程题库,可以帮助计算机程序员提升编程能力。LeetCode的题目涵盖了算法、数据结构、字符串、数组、链表等多个方面的知识,对于求职面试以及算法竞赛准备非常有帮助。 LeetCode上的编程题目分为简单、中等和困难三个难度级别。每个题目都有详细的题目描述、输入输出示例以及参考答案等内容。在解决每个问题时,我们需要仔细阅读题目,并根据题目要求提供正确的解答。 通常,我们需要使用编程语言如Python、C++等来实现解题思路。在编码之前,我们需要先分析问题,并找到合适的算法或数据结构来解决问题。一般来说,我们可以使用递归、迭代、动态规划等方法来解决常见的编程问题。 在LeetCode上,我们可以提交解答,并测试解答是否通过了所有的测试用例。如果通过了所有的测试用例,我们就可以得到题目的AC(Accepted)结果,并获得该题目的通过证书。如果没有通过所有的测试用例,我们可以检查自己的解答,查找解答中的错误或者不完善之处,并进行修改和优化。 总之,LeetCode编程题是一个优秀的学习和练习编程的平台。通过解答LeetCode上的编程题目,我们可以提升自己的编程能力,并且培养解决问题的思维方式。无论是求职面试还是算法竞赛,LeetCode编程题都是非常有帮助的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值