leetcode 2020-07-01

2020-07-01  本文已影响0人  HolyHide

今天leetcode刷到一个比较简单的题目,因为题目看起来很简单,但是仔细一看有很多限制条件

求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

这种题一看就是要用递归的套路,但是在结束递归条件上不知道怎么弄了

不能用if这些判断条件,想了一些办法,都越绕越远了

最后看了下官方的解答,又涨姿势了

基本思路就是:利用逻辑运算符的短路性质

比如&&,对于A&&B,如果A是true,那就继续执行B;如果A已经是false了,就不会去管B是true or false了

比如 || ,对于A||B,如果A是false,那就继续执行B,如果A已经是true可,就不会去管B是false or true了

所以java 利用 &&的解法就是

class Solution {

    public int sumNums(int n) {

        boolean flag = n > 0 && (n += sumNums(n - 1)) > 0;

        return n;

    }

}

想了下如果利用||怎么解呢

class Solution {

    public int sumNums(int n) {

        boolean flag =  n <= 0 || (n+=sumNums(n-1)) >0;

        return n;

   }

}

上一篇 下一篇

猜你喜欢

热点阅读