leetcode刷题记录Array篇(26&27~Remove Element)

L千年老妖 · · 1361 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

26.Remove Duplicates from Sorted Array

题目:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

翻译:给定一个排序好了的数组,删除重复的位置,使每个元素只显示一次并返回新的长度。不要为另一个数组分配额外的空间,您必须使用常量内存来进行此操作。

思路:就是去除数组中重复的数,不过要求不能重新分配内存,所以只能在原数组中操作.
1.首先我们知道排序的数组,nums[i+1]>=nums[i];
2.我们可以设置一个标志count,为重复数字的数量,遍历数组,当nums[i]==nums[i-1]时,count++;不等时,使nums[i-count]==nums[i]
3.解释一下i-count,它的计算值是当前元素下标-已遍历重复数数量,即为剩下的唯一数数量
4.遍历结束,len(nums)-count就是剩下的唯一数数量

golang代码:

package main

import (
  "fmt"
)

func main() {

    nums := []int{1, 1, 5, 6, 6, 6}
    fmt.Println(removeDuplicates(nums))

}

func removeDuplicates(nums []int) int {
    count := 0
    for i := 1; i < len(nums); i++ {
        if nums[i] == nums[i-1] {
            count++
        } else {
            nums[i-count] = nums[i]
        }
    }
    return len(nums) - count
}
#27.Remove Element

题目:Given an array and a value, remove all instances of that value in place and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.

翻译:给定一个数组和一个值,删除该值的所有实例,并返回新的长度。不要为另一个数组分配额外的空间,您必须使用常量内存来进行此操作。元素的顺序可以改变。

思路:这题比较简单,简单说下,就是要返回不和val值相等的数组元素数量。设置返回结果result初始值为0,遍历数组,如果值和给定的val值不同,给nums[result]赋值为nums[i],并且result加1。

golang代码:

package main

import (
    "fmt"
)

func main() {
    nums := []int{1, 2, 1, 3}
    fmt.Println(removeElement(nums, 2))
}

func removeElement(nums []int, val int) int {
    var result int
    for i := 0; i < len(nums); i++ {
        if nums[i] != val {
            nums[result] = nums[i]
            result++
        }
    }
    return result
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:L千年老妖

查看原文:leetcode刷题记录Array篇(26&27~Remove Element)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1361 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传