算法打卡第一天 702.二分查找 27.移除元素 JS

112 阅读1分钟

力扣702二分查找

 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
    // 定义左边指针和右边指针
    let left = 0,right = nums.length - 1;
    while (left <= right) {
       // 定义查找的中间点
        const mid = Math.floor((right - left)/2) + left;
        // 当二分查找的中间点等于目标值时候,停止循环
        if (nums[mid] == target) {
           return mid
        // 如果中间值大于目标值,说明目标值在中间值的左边,更新右边值
        }else if (nums[mid] > target) {
            right = mid - 1
        }
        // 如果中间值大于目标值,说明目标值在中间值的坐标,更新左边值
         else {
            left = mid + 1;
        } 
    }
      return -1;
};

力扣27移除元素

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    // 定义快慢2指针
    let slow = 0,fast = 0;
    // 定义循环终止条件
    while (fast < nums.length) {
        //  判断当前循坏值是否不等于需要移除的值
        if (nums[fast] != val) {
            // 更新慢指针的值
            nums[slow] = nums[fast];
            // 慢指针向右移动
            slow++;
        }
        fast++;
    }
    return slow;
};