1.求 1+2+...+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/qiu-12n-lcof
思路一:利用递归和短路原理

class Solution {
public:
    int sumNums(int n) {
        int sum=n;
        bool t=(n>0)&&(sum+=sumNums(n-1));
        return sum;
    }
};

复习:
二维数组的查找:注意找到一个特殊的点,一般在左下或右上。
替换空格:先找出空格的个数,然后扩展这个字符串的长度(因为要把空格变为%20)。双指针,一个指针在新字符串尾,一个在老字符串尾,从尾到头依次替换。记得最后要加结束字符‘\0’。
从尾到头打印链表:从尾到头就是堆栈。
重建二叉树:寻找前序遍历和中序遍历的根节点,左子树,右子树,递归建立新的二叉树。
用两个栈实现队列:push操作正常进行,栈1正常进栈;pop操作,如果栈2为空,就把栈1的数据都放到栈2里,清空栈1;如果不为空,直接返回并pop栈2的栈顶元素。
旋转数组的最小数字:二分法。考虑非递减数组,左面递增,右面递增,里面有重复数字这些情况。