IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Leetcode-217存在重复数组 -> 正文阅读

[数据结构与算法]Leetcode-217存在重复数组

Leetcode-217存在重复数组

对一个数组nums进行从小到大排序:sort(nums.begin(),nums.end())

cpp解法1:排序,用的STL的sort函数

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        sort(nums.begin(),nums.end());
            for(int i=0;i<nums.size()-1;i++){  // 这里为什么要用nums.size()-1呢? 因为我们的i应该是从0到nums.size()-1,但下面用到了nums[i+1],所以i+最大只能到nums.size()-1,那么i+1只能到nums.size()-2,这里我们的是小于号,所以只要小于nums.size()-1就可以。
                if(nums[i]==nums[i+1])
                    return true;   
            }
        return false;
    }
};

复杂度:

时间复杂度:O(NlogN),其中 N为数组的长度。需要对数组进行排序。
空间复杂度:O(logN),其中 N 为数组的长度。注意我们在这里应当考虑递归调用栈的深度。

cpp解法2:哈希表

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_set<int> s;
        for(int x:nums){     //C++11引入的一个更简单的for循环语句
       //for(数据类型 变量 : 序列)
	   //循环语句
            if(s.find(x)!=s.end()){
                return true;
            }
            s.insert(x);
        }
        return false;
    }
};

解析:

for(int x:nums)
C++11引入的一个更简单的for循环语句,用于遍历序列的所有元素
语法形式:

for(数据类型 变量 : 序列)
	循环语句

序列
可以是花括号括起来的初始值列表、数组、vector、string,这些类型的特点是拥有能返回迭代器的 begin 和 end成员
数据类型:变量
序列中的每个元素都能转换成该变量的类型,最简单的方法是使用auto类型说明符。
若需要对序列中的元素进行写操作,则需要声明成引用类型&。
对vector对象中元素进行翻倍

vector<int>v={0,1,2,3,4};
//因为要对v中的元素进行写操作,所以是引用类型
for(auto &r : v)
	r*= 2;

//等价于以下传统for循环
vector<int>v={0,1,2,3,4};
for(int i=0; i<v.size(); i++){
	v[i]*=2;  //r相当于v[i]
}
//传统for语句
for(auto beg= v.begin(), end= v.end(); beg!= end; ++beg){
	auto &r= *beg;
	r*= 2;
}

正向查找find():
s.find(str)
string中find()返回值是字母在母串中的下标位置。
如果没有找到,那么会返回一个特别的标记npos,一般写作string::npos

s.find()查找 s.end()查找到最后 s.insert()插入值

JAVA暴力:超时了。。。

class Solution {
    public boolean containsDuplicate(int[] nums) {
        for(int i=0;i<=nums.length-1;i++){
            for(int j=i+1;j<nums.length;j++){
                if(nums[i]==nums[j])
                    return true;
                continue;
            }
        }
        return false;
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:13:41  更:2022-05-21 19:14:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 0:59:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码