编程训练(三)

142 阅读1分钟

1.ES6 Array(m).fill(value,start,end)


var pre=Array(m).fill(target);
console.log(Array(8).fill('s')); //[ 's', 's', 's', 's', 's', 's', 's', 's' ]

2.最长连续递增序列

var findLengthOfLCIS = function (nums) {
  if (!nums.length) {
    return 0
  }
  var res = [nums[0]]
  for (let i = 1; i < nums.length; i++) {
    if (nums[i] > nums[i - 1]) {
      res.push(nums[i]);
    } else {
      break;
    };
  };
  return res;
};
var nums = [1, 2, 3, 4, 5, 1, 7, 8];
console.log(findLengthOfLCIS(nums)); //[ 1, 2, 3, 4, 5 ]

3.字符串中的第一个唯一字符的位置

//字符串中的第一个唯一字符
var firstUniqChar = function (s) {
  let result = s.length ? [...s].filter((item, index, arr) => {
    return arr.indexOf(item) === arr.lastIndexOf(item);
  }) : [];
  return result.length ? s.indexOf(result[0]) : -1
};
var s='sttsmnchq';
console.log(firstUniqChar(s)); //4

4.求数组中的第K个最大元素

// 求数组中的第K个最大元素
var findKthLargest = function (nums, k) {
  nums.sort((a, b) => a - b);
  var res = [];
  while (k--) {
    res.push(nums.pop());
  }
  return res[res.length - 1]
};

5.搜索下标

var searchInsert = function(nums, target) {
  // 利用二分查找法
  return binarySearch(nums,target,0,nums.length-1)
  
};

function binarySearch(arr, target, start, end) {
  if (start > end) {
    return start
  };
  var mid = Math.floor((start + end) / 2);
    if (arr[mid] == target) {
      return mid
    };
    if (arr[mid] < target) {
      return binarySearch(arr, target, mid + 1, end);
    };
    if (arr[mid] > target) {
      return binarySearch(arr, target, start, mid - 1)
    };
}