首页 > 其他分享 >力扣 075

力扣 075

时间:2023-11-14 17:01:50浏览次数:41  
标签:vector 075 int 复杂度 力扣 num arr2 arr1

LCR 075. 数组的相对排序

给定两个数组,arr1 和 arr2

  • arr2 中的元素各不相同
  • arr2 中的每个元素都出现在 arr1 中

对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。


利用map计数,想的过于复杂,后续看如何优化。

复杂度

  • 时间复杂度: 击败100%
  • 空间复杂度: 7.9MB 击败5%

class Solution {
public:
    vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) {
        map<int,int> num;
        for(auto i: arr2){
            // t.insert(pair<int, string>(0, "one"));
            num[i]=0;
        }
        vector<int>res1,res;
        for(int i:arr1){
            if(num.count(i)==0){
                res1.push_back(i);
            }else{
                num[i]+=1;
            }
        }
        for(int i:arr2){
            for(int j=0;j<num[i];j++){
                res.push_back(i);
            }
        }
        sort(res1.begin(),res1.end());
        for(auto i:res1){
            res.push_back(i);
        }
        return res;

    }
};

作者:wu-xian-5a

链接:https://leetcode.cn/problems/0H97ZC/solution/li-yong-mapji-shu-by-wu-xian-5a-lfcf/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:vector,075,int,复杂度,力扣,num,arr2,arr1
From: https://blog.51cto.com/u_15974747/8371630

相关文章

  • 力扣-34-在排序数组中查找元素的第一个和最后一个位置
    一、题目力扣地址:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/二、解法思路:也是二分查找相关题目,详细解法看注释fromtypingimportListclassSolution:"""leetcode:34二分查找类题目,与传统二分查......
  • 力扣-35-搜索插入位置
    一、题目力扣地址:https://leetcode.cn/problems/search-insert-position/二、解法思路与标准的二分查找一直,唯一的区别为,若所需target不在nums中,需要找到insert的索引fromtypingimportListclassSolution:"""leetcode:35在二分法的基础上延伸,若无法找到......
  • 力扣-704-二分查找
    一、题目力扣链接:https://leetcode.cn/problems/binary-search/description/二、解法思路标准的二分查找题目,常规上有左闭右闭和左闭右开的解法1、左闭右闭classSolution:"""leetcode:704采用左闭右闭的方式,[left,right]区间的定义这就决定了二分法的代......
  • 力扣 1460 脑筋急转弯
    1460.通过翻转子数组使两个数组相等对两个数组就行排序。依次对比,有不同则返回false。所有数字一样,那就一定可以翻转使得两个数组相等,翻转次数不同而已,总能达到。当有数字不一样,那一定不会相等。classSolution{public:boolcanBeEqual(vector<int>&target,vector<int>&a......
  • 力扣2578 排序后两个数依次选择
    2578. 最小和分割隔空依次取值,相加最小,原理暂不清楚,举例演示就可发现。classSolution{public:intsplitNum(intnum){intnum1=0,num2=0;vector<int>a;while(num){a.push_back(num%10);num/=10;}......
  • 力扣2293 暴力模拟
    2293. 极大极小游戏给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。对 nums 执行下述算法:设 n 等于 nums 的长度,如果 n==1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n/2 ,下标从 0 开始。对于满足 0<=i<n/2 的......
  • 力扣2406. 将区间分为最少组数
    给你一个二维整数数组 intervals ,其中 intervals[i]=[lefti,righti] 表示 闭 区间 [lefti,righti] 。你需要将 intervals 划分为一个或者多个区间 组 ,每个区间 只 属于一个组,且同一个组中任意两个区间 不相交 。请你返回 最少 需要划分成多少个组。如果......
  • 力扣466
     定义str=[s,n]表示str由n个字符串s连接构成。例如,str==["abc",3]=="abcabcabc"。如果可以从s2 中删除某些字符使其变为s1,则称字符串s1 可以从字符串s2获得。例如,根据定义,s1="abc"可以从s2="abdbec"获得,仅需要删除加粗且用斜体标识的字符......
  • 算法day1数组|力扣704二分查找,27移除元素
    数组基础理论数组是存放在连续内存空间上的相同类型数据的集合。可以通过下标轻松获取数据,但是增删元素的时候需要移动其他元素Vector和array的区别vector的底层实现是array,但是vector是容器不是数组数组的元素不能删除,只能覆盖小技巧:取中间intmid=l+r>>1;//有时候怕溢......
  • 力扣2149 暴力+另建两个vector<int>
    2149. 按符号重排数组解题思路另建两个容器,分别存储正负整数,然后依次正负相间放入numsclassSolution{public:vector<int>rearrangeArray(vector<int>&nums){intn=nums.size(),j=1;vector<int>a,b;for(autoi:nums){if(i<0)b.......