2025-07-09,Day-3

第一题:寻找文件副本

image.png

代码及思路

//题目说的很抽象,但实际上就是返回数组中含有重复数字的值,而且只需要返回其中之一.
func findRepeatDocument(documents []int) int {
    //错位遍历数组,对比documents[i]和documents[j],若想等直接返回值相等的值即可
    for i := 0; i < len(documents)-1; i++ {
        for j := i + 1; j < len(documents); j++ {
            if documents[i] == documents[j] {
                return documents[j]
            }
        }
    }
    return -1
}

此外还做了个几乎可以说是前面的题的换皮的题,用的是看寻找文件副本的更优解时了解的使用哈希集合的方法


image.png

代码及思路


func containsDuplicate(nums []int) bool {
    same := make(map[int]bool)
    for _, num := range nums {
        if same[num] { //等价于 val := same[num] ; if val == true{}
            return true //遇到重复时返回true
        }
        same[num] = true //标记第一次出现的数字
    }
    return false
}

第二题:是否所有1都至少相隔k个元素

image.png

代码及思路

// 是否所有 1 都至少相隔 k 个元素
func kLengthApart(nums []int, k int) bool {
    cnt := k //初始化cnt为k,避免第一个1被判定为false.
    for i := 0; i < len(nums); i++ {
        if nums[i] != 1 {
            cnt++ //遍历nums,在下次遇到1之前,cnt++
        } else if cnt < k {
            return false //只要有一个的间隔小于k,都判定为错
        } else {
            cnt = 0 //重置间隔计数
        }
    }
    return true 
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容