美文网首页
[2021-09-11][简单]数组中只出现一次的数

[2021-09-11][简单]数组中只出现一次的数

作者: 许忠慧 | 来源:发表于2021-09-11 15:26 被阅读0次

题目来源:牛客网

描述

给定一个长度为 n的整型数组arr和一个整数k(k>1)。已知 arr中只有 1 个数出现一次,其他的数都出现 k次。
请返回只出现了 1 次的数。

示例1

输入:[5,4,1,1,5,1,5],3 
返回值:4

解题思路,看到这个题我第一时间想到的是python的统计元素出现个数的count函数。
遍历整个列表,统计每个元素出现的次数,当有元素只出现一次则为返回值

class Solution:
    def foundOnceNumber(self , arr , k ):
        # write code here
        for i in arr:
            if arr.count(i) == 1:
                return i

写法没有问题,但是无法通过全部用例,会运行超时。显然在上述解法中题目里告诉过我们的k值没有被利用上。

先对列表进行排序
那列表的第一个值和第k-1个值去做对比如果想等则继续遍历,如果不相等就说明这个值是不重复值。
同时,这里存在一种特殊情况,如果最后一个数才是唯一数,这时候就不能去和这个数的k-1后的数去进行对比的,会数组越界

class Solution:
    def foundOnceNumber(self , arr , k ):
        # write code here
        arr.sort()
        l = len(arr)
        flag = 0
        
        while True:
            if arr[flag] == arr[-1]:
                return arr[flag]
            if arr[flag] != arr[flag+k-1]:
                return arr[flag]
            flag = flag+k

OK,符合提交条件。

不过如果在不考虑程序性能的情况下,个人觉得第一种方式的可读性更强一些。

相关文章

  • [2021-09-11][简单]数组中只出现一次的数

    题目来源:牛客网[https://www.nowcoder.com/practice/5d3d74c3bf7f4e...

  • 数组中只出现一次的数

    题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。方法一: 方...

  • 找出数组中只出现一次的数

    Single Number Given an array of integers, every element a...

  • 面试题56(1):数组中数字出现的次数

    题目 数组中只出现一次的两个数字一个整型数组里除两个数字之外,其他数字都出现两次。请写程序找出这两个只出现一次的数...

  • LeetCode 数组算法练习

    数组去重 只出现一次 交集 加一 移动零 两数之和

  • leetcode 136

    相同数异或为0,不同数异或为1,所以很容易找到数组中只出现一次的数。 int普遍是32位,而size_t在主流平台...

  • leetcode探索初级算法之数组

    推荐:只出现一次的数字,旋转数组,两个数组的交集 II 和 两数之和。 1. 删除排序数组中的重复项 给定一个排序...

  • Leetcode之数组篇

    1.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数...

  • 完美世界面试

    1.。面试题:找出数组中只出现一次的2个数(异或的巧妙应用)(出现3次) 题目:一个整型数组里除了两个数字之外,其...

  • [剑指offer]刷题笔记

    整数中1出现的次数 第一个只出现一次的字符 把数组排成最小的数 整数中1出现的次数 题目描述:求出113的整数中1...

网友评论

      本文标题:[2021-09-11][简单]数组中只出现一次的数

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