美文网首页数据解构和算法
56.有序数组中的单一元素

56.有序数组中的单一元素

作者: wo不是黄蓉 | 来源:发表于2022-02-17 20:50 被阅读0次

day8:540. 有序数组中的单一元素(中等)
思想:

  • 使用栈:由于数组中的元素都是成对出现的,因此使用栈对数组内容进行操作,到最后剩的一个就是需要返回的元素
  • 使用二分法:还是由于数组中的元素都是成对出现的,因此,去数组长度的中间值,如果mid为偶数说明目标元素在[mid,arr.length]这个区间里面;[参考]
    如果Mid为奇数,说明目标元素在[0,mid]这个区间
    方法一:
var singleNonDuplicate = function (nums) {
  let arr = [];
  for (let i = 0, len = nums.length; i < len; i++) {
    if (!arr.includes(nums[i])) {
      arr.push(nums[i]);
    } else {
      arr.pop();
    }
  }
  return arr.length > 0 ? arr[0] : null;
}

方法二:

var singleNonDuplicate = function (nums) {
  let left=0,right=nums.length-1;
  while(left < right){
    let mid = (left + right) >>> 1;
    //偶数值
    if(mid % 2 === 0){
      //相等则说明在左边,左边向前移动,取值空间重置为[left,mid]
      if(nums[mid] === nums[mid+1]){
          left = left +1;
      }else{
          right = mid; 
      }
    }else{
      //奇数值;当基数和前面的一位相等,说明目标在其右侧,左值向前移动,取值空间重置为[mid,right]
      if(nums[mid] === nums[mid-1]){
        left = left +1
      }else{
        right = mid
      }
    }
  }
return nums[right]
}

相关文章

  • 56.有序数组中的单一元素

    day8:540. 有序数组中的单一元素[https://leetcode-cn.com/problems/sin...

  • C语言实战开发篇-5 一维数组

    数组 1.概念:数组是由单一类型的数据元素组成的有序数据集合,每个数据元素使用数组名和下标来表示。数组中的数据元素...

  • Python算法-情人节限定:在成双成对中寻找单身狗

    540. 有序数组中的单一元素[https://leetcode-cn.com/problems/single-e...

  • 一起学算法-540. 有序数组中的单一元素

    一、题目 LeetCode-540. 有序数组中的单一元素地址:https://leetcode-cn.com/p...

  • Swift 数组

    数组的简单介绍 数组是一串有序的由相同类型元素构成的集合 数组中的元素是有序的,可以重复出现 在Swift中数组(...

  • Swift--原生集合类型

    数组 字典 Set集合 数组 数组:是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。...

  • 递归方法判断数组中的元素是不是有序

    问题:给定一个数组,请用递归方法判定数组中的元素是不是有序。分析:如果数组中只有一个元素,直接返回1表示有序

  • 06 - 基础篇之数组

    一. 数组的介绍 • 数组(Array)是一串有序的由相同类型元素构成的集合• 数组中的集合元素是有序的,可以重复...

  • 数组

    数组 由一组相同数据类型变量组成的有序集合,数组中的变量称为数组元素,元素在数组中位置称为下标,数组中元素个数称为...

  • swift基础语法(六)——数组

    介绍 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 Swift中...

网友评论

    本文标题:56.有序数组中的单一元素

    本文链接:https://www.haomeiwen.com/subject/mwislrtx.html