leetcode杂题收录

力扣334 递增的三元子序列

假设已经有两个数:first,second   (比如first=2,second=5),我们现在希望找到一个比5大的数

遍历整个数组for(int  num:nums),这个数与first,second三种关系:

   

 如果是第一种情况:更新first,first=num

如果是第二种情况:更新second,second=num

如果是第三种情况:说明找到了递增三元序列,return true

class Solution 
{
    public boolean increasingTriplet(int[] nums) 
    {
        int first=Integer.MAX_VALUE;
        int second=Integer.MAX_VALUE;

        for(int num:nums)
        {
            if(num<=first)
            {
                first=num;
            }  
            //如果num>=first&&num<two
            else if(num<=second)
            {
                second=num;  
            } 
            else//如果num>=two
            {
               return  true;
            }
        }
        return  false;
    }
}

 力扣2481   n等分切割圆的最少切割次数

切半径:

 切直径:

class Solution 
{
    //n等分的最小切割次数
    //有两种切法,切半径和切直径

    //结论:当n=奇数的时候,你只能切半径,不能切直径
    public int numberOfCuts(int n) 
    {
        if(n==1)  return 0; //不需要切割

        if(n%2==0)
        {
           return n/2;
        }
        else
        {
           return n;
        }
    }
}

力扣152  乘积最大子数组

class Solution 
{
    public int maxProduct(int[] nums)
    {
        //遍历数组,求出以每个位置元素结尾的最大乘积和最小乘积

        int  max=1;//以当前位置前面一个位置元素结尾的最大乘积
        int  min=1;//以当前位置前面一个位置元素结尾的最小乘积

        int  result=Integer.MIN_VALUE;

        for(int i=0;i<nums.length;i++)
        {
            //以当前位置元素结尾的最大乘积只能是三种情况中的最大值:(1)当前元素nums[i]  (2)以前一个位置元素结尾的最大乘积*当前元素 (3)以前一个位置元素结尾的最小乘积*当前元素
            int curMax=Math.max(nums[i],Math.max(max*nums[i],min*nums[i]));

            //以当前位置元素结尾的最小乘积只能是三种情况中的最小值:(1)当前元素nums[i]  (2)以前一个位置元素结尾的最大乘积*当前元素 (3)以前一个位置元素结尾的最小乘积*当前元素
             int curMin=Math.min(nums[i],Math.min(max*nums[i],min*nums[i]));

             result=Math.max(result,curMax);

             max=curMax;

             min=curMin;
        }
         return   result;
    }
}

力扣1780  判断一个数字是否可以表示为三的幂的和

如果将数字用三进制表示:

12=(110)3​     ,  21=(210)3​

结论:转换成三进制后,如果每一位都是0或1,没有2,那就可以表示为三的幂的和

只要有1位有2,那这个数就无法表示为三的幂的和

所以12可以,21不可以

class Solution 
{
    public boolean checkPowersOfThree(int n) 
    {
        while (n != 0) 
        {
            if (n % 3 == 2) 
            {
                return false;
            }
            n /= 3;
        }
        return true;
    }
}

  • 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、付费专栏及课程。

余额充值