剑指 Offer JavaScript刷题 第 3 天 查找算法(简单)

126 阅读1分钟

查找算法(简单)

剑指 Offer 03. 数组中重复的数字

先进行排序,然后验证是否与下一个元素相同

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3

限制:

2 <= n <= 100000

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/sh… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[]} nums
 * @return {number}
 */
var findRepeatNumber = function(nums) {
    // 先进行排序,然后验证是否与下一个元素相同
    nums = nums.sort((a,b) =>{return b -a})
    for(var i = 0;i < nums.length - 1;i++){
       if(nums[i] == nums[i+1]){
           return nums[i]
       } 
    }
};

剑指 Offer 53 - I. 在排序数组中查找数字 I

直接进行遍历

统计一个数字在排序数组中出现的次数。

示例 1:

输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2:

输入: nums = [5,7,7,8,8,10], target = 6 输出: 0

提示:

0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一个非递减数组 -109 <= target <= 109

注意:本题与主站 34 题相同(仅返回值不同):leetcode-cn.com/problems/fi…

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/za… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
    // 直接进行遍历
    var res = 0
    var index = 0
    for(var i = 0; i < nums.length;i++){
        if(nums[i] == target){
            res++
        }
    }
    return res
};