首页 > 其他分享 >力扣260

力扣260

时间:2023-12-05 21:31:43浏览次数:34  
标签:vector nums int res back 力扣 260 size

Problem: 260. 只出现一次的数字 III

思路

①map计数
②排序后,前后不一样的就是答案


class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int n=nums.size();
        vector<int>res;
        //map计数
        map<int,int>ma;
        for(int i=0;i<n;i++){
            ma[nums[i]]++;
        }
        for(auto [x,val]:ma){
            if(val==1)res.push_back(x);
        }
        return res;
    }
};

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int n=nums.size();
        vector<int>res;
        //排序后,前后不一样的就是答案
        sort(nums.begin(),nums.end());
        if(n==2)return nums;
        if(nums[0]!=nums[1])res.push_back(nums[0]);
        if(nums[n-1]!=nums[n-2])res.push_back(nums[n-1]);
        if(res.size()==2)return res;
        for(int i=1;i<n-1;i++){
            if(nums[i]!=nums[i-1] && nums[i]!=nums[i+1]){
                res.push_back(nums[i]);
            }
        }
        return res;
    }
};

标签:vector,nums,int,res,back,力扣,260,size
From: https://blog.51cto.com/u_15974747/8695914

相关文章

  • 实验五_OOP_张文瑞_202213260018
    实验任务3pets.hpp源码1#include<iostream>2usingstd::string;3classMachinePets{4private:5stringnickname;6public:7MachinePets(conststrings);8stringget_nickname()const;9virtualstrin......
  • 力扣---1423. 可获得的最大点数
    几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大......
  • 力扣137
    Problem: 137.只出现一次的数字II思路①排序后,前后不一样的就是答案②map计数后找出值为1的数复杂度时间复杂度、空间复杂度:思路①较优classSolution{public:intsingleNumber(vector<int>&nums){intn=nums.size();//排序后,前后不一样的就是答案......
  • 《力扣面试150题》题单拓展——回溯
    《力扣面试150题》题单拓展——回溯1.基础知识voidfind(string&s,inti,string&path){//终止条件 if(i==s.size()){ans.push_back(path);return;}for(intk=0;k<index[sub].size();k++){//处理一层path.push_bac......
  • 《力扣面试150题》题单拓展——滑动窗口
    《力扣面试150题》题单拓展——滑动窗口1.基础知识先区分好,枚举右端点,还是左端点,窗口内的条件改变后,一般都是while控制另一个窗口的移动,然后收集结算我感觉滑动窗口这里变动最大的,什么时候去滑动左窗口,什么时候去收集答案,都很不一样,得慢慢体会滑动窗口难题是真的难,呜呜呜呜......
  • 《力扣面试150题》题单拓展——双指针
    《力扣面试150题》题单拓展——双指针1.基础知识为什么双指针会正确?不会漏掉搜索空间数组nums递增排序,假设共8个元素假设由于搜索空间i<j的限制,只搜索右上角白色倒三角空间,一开始,我们检查右上方单元格(0,7),即计算A[0]+A[7],与target进行比较。如果不相等的话,则要么大......
  • 《力扣面试150题》题单拓展——二分法
    《力扣面试150题》题单拓展——二分法困难题:找第K大/小1.基础知识首先可以确定答案的上下界单调性分析:如果当前答案为m时,可以满足,一定有一侧是一定满足的,另一侧不一定,需要去探索boolis_ok(){}intl,r;intans;while(l<=r){intm=l+((r-l)>>1);......
  • 《力扣面试150题》题单拓展——堆
    《力扣面试150题》题单拓展——堆一、堆困难题:找K小,先考虑二分法基础知识//优先队列:priority_queue<int,vector<int>,greater<int>>q;//小根堆priority_queue<int,vector<int>,less<int>>q;//小根堆优先队列自定义比较函数//1,小根堆boolcmp(vector<i......
  • 力扣907. 子数组的最小值之和(单调栈)
    给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。由于答案可能很大,因此 返回答案模 10^9+7 。 示例1:输入:arr=[3,1,2,4]输出:17解释:子数组为[3],[1],[2],[4],[3,1],[1,2],[2,4],[3,1,2],[1,2,4],[3,1,2,4]。最小值为3,1,2,4,1,1,2,1,1,1,和......
  • 力扣刷题随笔
    力扣刷题随笔回文链表给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false输入:head=[1,2,2,1]输出:true输入:head=[1,2]输出:false链表中节点数目在范围[1,105]内0<=Node.val<=9本题的思路就是利用双指针的方法来比......