C++LeetCode数据结构基础详解

这篇文章主要介绍了C++实现LeetCode数据结构,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

C++LeetCode数据结构基础详解,久久派带你了解更多相关信息。

目录
  • 一、只出现一次的数字
  • 二、多数元素
  • 三、三数之和
  • 总结

一、只出现一次的数字

遍历一遍数组利用异或的特性来实现(相同为0,相异为1 )

例如[4,1,2,1,2] 4和1异或为5 5和2异或为7 7和1异或为6 6和2异或为4 这样就能找出唯一的数字了

public int singleNumber(int[] nums) {        int res=0;        for(int i=0;i<nums.length;i++){           res=res^nums[i];        }        return res;    }

二、多数元素

这题可以利用排序就返回中间位置元素,就是数量超过一半的数字,但是时间复杂度为O(nlogn),

利用摩尔投票法,实现遍历一遍数组就能找到多数元素,

具体实现:定义两个变量计数位和标记位,将计数位初始化为1 ,将标记位为数组第一个元素 如图[2,2,1,1,1,2,2]

C++LeetCode数据结构基础详解

public int majorityElement(int[] nums) {    //摩尔投票法  也叫同归于尽法     int count=1;    int res=nums[0];    for(int i=1;i<nums.length;i++){        if(res==nums[i]){            count++;        }else{            count--;            if(count==0){                res=nums[i];                count=1;            }        }    }    return res; }

三、三数之和

三数之和有点类似与两数之和,但是难度确增加了不少

思路是先对数组进行排序,之后定义双指针**,左指针为i+1,右指针为最后一个数组元素,进行求和找和第一个数字相等的数**

C++LeetCode数据结构基础详解

public List<List<Integer>> threeSum(int[] nums) {        //排序加双指针        Arrays.sort(nums);        List <List<Integer>>  list=new ArrayList<>();        if(nums==null||nums.length<3){            return list;        }        for(int i=0;i<nums.length-2;i++){            if(nums[i]>0){                break;            }            if(i>0&&nums[i]==nums[i-1]){//去掉重复元素                continue;            }            int left=i+1; int right=nums.length-1;            while(left<right){                int temp=-nums[i];                if(nums[left]+nums[right]==temp){                    list.add(new ArrayList<>(Arrays.asList(nums[i], nums[left], nums[right])));                    left++;                    right--;                    while(left<right&&nums[left]==nums[left-1]) left++;                    while(left<right&&nums[right]==nums[right+1]) right--;                }else if(nums[left]+nums[right]>temp){                    right--;                }else{                    left++;                }            }        }        return list;     }

注意:

1 .给数组排序之后判断元素是否大于0,大于直接返回,后面元素一定大于0

2. 去掉重复的元素,如果值相同继续指针移动

3. Arrays.asList() 是将数组转换成List集合的方法

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注趣讯吧的更多内容!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/13258.html

(0)
nan
上一篇 2021-08-16
下一篇 2021-08-16

相关推荐

  • 散文经典美句摘抄段落(唯美散文段落摘抄大全)

    1.我们有一千个理由勤奋上进,却总是能找到一个理由逃避。–张小娴2.我喜欢他的时候,他是骄傲的,所以,他可以对你差劲–张小娴3.明知会失去自由,明知这是一生一世的合约,为了得到对方,为了令对方快乐,也甘愿作出承诺。–张小娴4.要

    2022-01-14 热点头条
    0
  • 为什么临期食品越来越火爆?

    当我们都在谈消费升级时,临期食品却卖爆了!这一切都在预料之中,又在意料之外。预料之中的是,疫情改变了许多人的消费观念。人们不再一味地追求高消费,开始对未知的经济风险有了防范心理。在花钱方面,很

    2021-10-08
    0
  • 男子头疼自己在家针灸扎破心脏 !针头断了留在了体内 !

    近日,因有高血压病史,36岁的吴先生(化名)出现头痛、头晕等不适症状,他没有就医吃药,竟选择在家自行针灸来缓解症状,结果在扎入靠近心脏位置的穴位时用力过猛、扎入过深,,结果在扎入靠近心脏位置的穴位时扎入过深,针头刺破心脏留在体内,造成心脏破裂损伤,心包有大量积血。针头断了留在了体内。然而吴先生并没当

    热点头条 2023-05-05
    0
  • 罗昌平是谁?背景资料显示他是公司董事长

    10月8日,三亚市公安局吉阳分局发布通报称,因涉嫌“侵害英雄烈士名誉、荣誉罪”,罗昌平被刑事拘留。舆论好奇,罗昌平是谁?公开背景资料显示,罗昌平是天

    2021-10-08
    0
  • 越来越多的单身女性开始买房 !超九层受访者支持单身女性购房 !

    如今,越来越多的女性选择独立购房,这体现出女性更加独立自主的婚姻观念,但也有人表示女性没必要太累。你怎么看女性独立购房?近日,中国青年报社社会调查中心联合问卷网对2006名受访者进行的一项调查显示,84.2%的受访者感觉近几年身边单身女性购房的现象多了,93.9%的受访者支持单身女性购房。对于女性独

    热点头条 2023-05-11
    0
  • 售发臭隔夜肉大润发被罚近139万(食品安全多次翻车)

    最近是怎么啦!网络上频频爆出关于食品安全隐患的报道,让消费者担心不已。大家最熟悉的大润发超市又出事了,就因为售发臭隔

    2021-08-28
    0

发表回复

登录后才能评论