头像

cyb-包子

重庆邮电大学




离线:1小时前


最近来访(24)
用户头像
grant1499
用户头像
ㅤ_77
用户头像
ljn
用户头像
李丽红
用户头像
阿梁
用户头像
Wuzimu
用户头像
cyhyyds
用户头像
繁花似锦
用户头像
Mly2019
用户头像
用户头像
Joanna
用户头像
zx_explorer
用户头像
陈平安
用户头像
wxdl
用户头像
明灯
用户头像
KTKTK
用户头像
狂刷AcWing
用户头像
看海的人
用户头像
acw_zym
用户头像
现代修士o_O


/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {TreeNode}
 */
var lowestCommonAncestor = function(root, p, q) {
    if(root === null || root === p || root === q){
        return root;
    }   
    let l = lowestCommonAncestor(root.left, p, q);
    let r = lowestCommonAncestor(root.right, p, q);
    if(!l) return r;
    if(!r) return l;

    return root;
};



/**
 * @param {number[]} A
 * @return {number[]}
 */
var multiply= function(a) {

    const res =[];
    let left = new Array(a.length).fill(1);
    let right = new Array(a.length).fill(1);
    for(let i=1;i<a.length;i++){
        left[i] = a[i-1] * left[i-1];
    }
    for(let j=a.length-2;j>=0;j--){
        right[j] = a[j+1] * right[j+1];
    }
    for(let k=0;k<a.length;k++){
        res[k] = left[k] * right[k];
    }
    // console.log(left)
    // console.log(right)

    return res;

};



/**
 * @param {number} num1
 * @param {number} num2
 * @return {number}
 */
var add= function(a, b) {
    if(a===0||b===0) return a||b;
    return bitadd(a,b);
};


function bitadd(a,b){
    if(b!==0){
        [a,b]=[a^b,(a&b)<<1];
        return bitadd(a,b);
    }else{
        return a;
    }
}




/**
 * @param {number} n
 * @return {number}
 */
var getSum= function(n) {
  return (n ** 2 + n) >>> 1;
};

// 下面的代码acwing 无法通过,但是leetcode可以

var sumNums = function(n) {
    return n && n + sumNums(n-1);
};



/**
 * @param {number[]} nums
 * @return {number}
 */
var maxDiff= function(nums) {
    let min = nums[0];
    let res = 0;
    for(let i = 1; i < nums.length; i ++){

        res = Math.max(res, nums[i] - min);
        if(nums[i] < min){
            min = nums[i];
        }
    }
    return res;
};



/**
 * @param {number[]} numbers
 * @return {bool}
 */
var isContinuous= function(numbers) {
    if(!numbers.length) return false;
    const set = new Set();
    let min = 14, max = 0;
    for(let num of numbers){
        if(!num) continue;
        if(set.has(num)) return false;
        set.add(num);
        min = Math.min(min, num);
        max = Math.max(max, num);
    }

    return max - min < 5;
};



/**
 * @param {string} str
 * @param {number} n
 * @returns {string}
 */
var leftRotateString= function(str, n) {
    // abcdefg => gfedcba cdefg ab

    return str.slice(n) + str.slice(0, n);


};



/**
 * @param {string} str
 * @returns {string}
 */
var reverseWords = function(str) {
    // 去除多个空格,只留一个,且根据空格分开成数组
    let arr = str.trim().replace(/\s+/g, ' ').split(' ');
    let l = 0;
    let r = arr.length - 1;
    while(l < r){
        let tmp = arr[l];
        arr[l] = arr[r];
        arr[r] = tmp;
        l ++;
        r --;
    }
    // console.log(arr)
    return arr.join(' ')
};



/**
 * @param {number} sum
 * @return {number[][]}
 */
var findContinuousSequence= function(target) {
    let list = [];
    let left = 1;
    let right = 1;
    let sum = 0;
    while(left < target / 2){
        if(sum < target) {
            sum += right;
            right ++;
        }else if(sum > target) {
            sum -= left;
            left ++;
        }else {
            let arr = [];
            // console.log(left, right);
            for(let i = left; i < right; i ++){
                arr.push(i);
            }
            list.push(arr);
            sum -= left;
            left++;
        }
    }
    return list;
};



/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var findNumbersWithSum = function(nums, target) {
    let l = 0, r = nums.length - 1;
    nums.sort((a,b) => a - b);
    while(l < r) {
        if(nums[l] + nums[r] === target) return [nums[l], nums[r]];
        else if(nums[l] + nums[r] > target) r--;
        else l ++;
    }
    return [];
};