LeetCode笔记:217. Contains Duplicate

题目:

Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

大意:

给出一个int型的数组,判断数组是否包含了重复的数。如果有任何的数值在函数中出现过至少两次,你的数组就应该返回true,如果每个数值都是单一的,那么就返回false。

思路:

一开始我采用之前一个判断字母数的同样的思路,用一个10位的数组记录09的出现次数,后来运行说还有负数。。。于是加上了-9-1的9个数字,将数组改成19位,运行又发现还有极大的数。。。而不是我想的单一的个位数,这就超过数组的承受能力了,一开始又不说清楚= =。
于是换了一种思路,先将数组中的数字进行排序,排序之后数组中的内容就是按顺序排列的,如果有相同的数值,那一定是相邻排列的,所以只要遍历数组检查是否有相邻的两个数值相等就可以啦。这次终于ac了,看了一下Discuss的最Hot的方法,跟我的思路一样,太开心了。
关于排序有很多种方法,Java的数组自带有排序函数,也可以采用一些排序算法,可以参考这个博客:http://blog.csdn.net/fengyifei11228/article/details/2623980,写的还蛮全的。

代码(Java):

public class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);// 先数组内排序,参考:http://blog.csdn.net/fengyifei11228/article/details/2623980
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] == nums[i + 1]) return true;// 循环判断排序后有没有两个相同的数字
        }
        return false;
    }
}

合集:https://github.com/Cloudox/LeetCode-Record


查看作者首页

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,265评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 最近常常见到珍珠鸡。一次是在云南香格里拉的德钦县,在一个山洼里有一大片葡萄园,太阳落山前,狗和羊们都跑出来在员工宿...
    孙宵祎阅读 824评论 4 5