zoukankan      html  css  js  c++  java
  • LeetCode

    最近在刷LeetCode题 为了心中的一个小秘密,在考虑是用英文还是中文的时候纠结了,最后为了省篇幅还是选择了中文

    1.从排序数组中删除重复项

    问题:给定排序的数组nums,就地删除重复项,使每个元素只出现一次并返回新的长度。不要为另一个数组分配额外的空间,你必须这样做修改输入数组就地用O(1)额外的内存。

    例1:
    鉴于nums = [1,1,2],
    您的函数应返回长度= 2,与前两个元素nums是1和2分别。
    你返回的长度超出了什么并不重要。

    解:

    /**
     * @param {number[]} nums
     * @return {number}
     */
    var removeDuplicates = function(nums) {
      let len = nums.length
      let a =0
      for(let i=0;i<len;i++){
      if(nums[i]!== nums[a]){
          a++;
          nums[i] = nums[a]
        }
      }
      return a+1
    };

     2.给定一个数组,将数组向右旋转k步,其中  k  为非负数

    例子:

    输入: [1,2,3,4,5,6,7]和k = 3
    输出: [5,6,7,1,2,3,4]
    说明: 
    向右旋转1步:向右[7,1,2,3,4,5,6]
    旋转2步:向右[6,7,1,2,3,4,5]
    旋转3步:[5,6,7,1,2,3,4]

    知识点:这里着重了解unshift和pop方法的使用  unshift:向数组开头添加一个或更多元素,返回新的长度  pop:用于删除并返回数组的最后一个元素 注意这两个方法 会修改原数组的值

    解:

    /** 
    *@param {number[]} nums
     * @param {number} k
     * @return {void} Do not return anything, modify nums in-place instead.
     */
    var rotate = function(nums, k) {
       while(k>0){
        nums.unshift(nums.pop())
        k--
        }     
    }   

    注意:if满足条件后只执行一次 ,while只要满足条件会不停的执行

     3.给定一个整数数组,查找数组是否包含任何重复项。如果数组中至少出现两次值,则函数应返回true,如果每个元素都是不同的,则返回false。

    例子:

    输入: [1,2,3,1]
    输出: true

    解:

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var containsDuplicate = function(nums) {
      nums.sort()
      let len = nums.length
      for(let i=0;i<len;i++){
        if(nums[i] == nums[i+1]{
          return true}
        }
      }
      return false }
     
  • 相关阅读:
    点击表单提交 却打开了另存为对话框
    js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
    html怎么隐藏input标签
    莫名其妙地改变了数组的值,原来是……
    addEventListener 用法
    JavaScript DOM元素常见操作详解【添加、删除、修改等】
    MySQL用户权限验证与管理方法详解
    mysql如何修改root用户的密码
    python案例
    IDEA启动报 Error:java: JDK isn't specified for module 'xxx' 已解决
  • 原文地址:https://www.cnblogs.com/alhh/p/9917149.html
Copyright © 2011-2022 走看看