美文网首页
leetcode-两道数组简单题

leetcode-两道数组简单题

作者: 萍水间人 | 来源:发表于2020-02-15 20:54 被阅读0次

moveZeroes

将一个数组中的所有零元素都移动到数组的最后,并且保持其他元素的相对顺序

这题一开始想偏了,也没有想出很好的算法,其实还是双指针不熟练

我们可以用两个指针,i和j
j做一次遍历,然后将不为零的元素全部移动到数组的首部,每移动一次i++

最后在数组的尾部添加0

一开始确实没这么想,思路就卡住了,代码写了半天还在报错,最后看了解答忍不住一句woc原来这么简单的思路

用go写的代码

package main

func moveZeroes(nums []int)  {
    length := len(nums)
    j := 0
    for i:=0;i<length;i++{
        if nums[i] != 0 {
            nums[j] = nums[i]
            j++
        }
    }
    for i:=j;i<length;i++{
        nums[i] = 0
    }
}

类似这种双指针的用法其实很多,不得不说双指针是一种很巧妙的方法

判断是否为 moutain 数组

所谓的 moutain 数组就是中间有一个元素满足在它之前的递增,在它之后的递减这种要求

那么思路也就很简单了,就是首先找到这个moutain值,然后判断一下之后的元素是不是递减(因为之前如果一直递增的话就直接返回true)

但是还有一些特殊情况要考虑的呀,其中如果前两个数不递增,或者后两个数不递减的情况都是要排除的

package main
func validMountainArray(A []int) bool {
    length := len(A)
    if length < 3{
        return false
    }
    if A[0] >= A[1] || A[length - 1] >= A[length-2]{
        return false
    }
    i := 1
    for ;i<length;i++{
        if A[i-1] >= A[i]{
            break
        }
    }

    // //A[i-1] 就是山峰
    // if i == length{
    //  return false
    // }
    for j:=i;j<length;j++{
        if A[j] >= A[j-1]{
            return false
        }
    }
    return true
}

总结: 虽然是两道简单题,但是也花了我不少时间,对于这些基本的思路还是要不断地总结为好

相关文章

  • leetcode-两道数组简单题

    moveZeroes 将一个数组中的所有零元素都移动到数组的最后,并且保持其他元素的相对顺序 这题一开始想偏了,也...

  • 每周一道算法题(二十二)

    由于本周的题目比较简单,又很相似,于是就来上两道吧,两道题的难度级别都是"Easy" 题目:给一个有序的数组,将其...

  • 【leetcode-动态规划】Longest Increasin

    【leetcode-动态规划】Longest Increasing Subsequence 给定一个无序的整数数组...

  • 【leetcode-数组】三数之和

    【leetcode-数组】三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...

  • [Leetcode] 数组中数字出现的次数

    数组中数字出现的次数 来源: Leetcode-数组中数字出现的次数 1. 解题思路 异或 异或满足交换律, 即...

  • 【leetcode-动态规划】 跳跃游戏

    【leetcode-动态规划】 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表...

  • 两道题

    这两道题是真的很难,很有技术含量。如果你“钻”进去了,这道题就很简单了。 话不多说,看题:1、...

  • LeetCode刷题笔记(零)目录

    前300 简单 免费的,一共69题 Leetcode-cn前300题,免费且简单的题目刷题记录汇总。 一. 数组 ...

  • 电商专业学习嵌入式软件开发第三十一天

    C第五天 老师早上先给我们讲了昨天留的两道题,然后就开始给我们讲数组和指针,最后还涉及一点二维数组。每次到了指针这...

  • 11.18 日报

    今天做了判断图形的简单题,做了申论两道单一题。晚上回来改了错。 发现晚上效率不高,容易迷糊,就专门用来改错好了。 ...

网友评论

      本文标题:leetcode-两道数组简单题

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