LeetCode 2094. 找出 3 位偶数

简介: LeetCode 2094. 找出 3 位偶数

文章目录


1. 题目

2. 解题


1. 题目


给你一个整数数组 digits ,其中每个元素是一个数字(0 - 9)。数组中可能存在重复元素。


你需要找出 所有 满足下述条件且 互不相同 的整数:


该整数由 digits 中的三个元素按 任意 顺序 依次连接 组成。

该整数不含 前导零

该整数是一个 偶数

例如,给定的 digits 是 [1, 2, 3] ,整数 132 和 312 满足上面列出的全部条件。


将找出的所有互不相同的整数按 递增顺序 排列,并以数组形式返回。

示例 1:
输入:digits = [2,1,3,0]
输出:[102,120,130,132,210,230,302,310,312,320]
解释:
所有满足题目条件的整数都在输出数组中列出。 
注意,答案数组中不含有 奇数 或带 前导零 的整数。
示例 2:
输入:digits = [2,2,8,8,2]
输出:[222,228,282,288,822,828,882]
解释:
同样的数字(0 - 9)在构造整数时可以重复多次,
重复次数最多与其在 digits 中出现的次数一样。 
在这个例子中,数字 8 在构造 288、828 和 882 时都重复了两次。 
示例 3:
输入:digits = [3,7,5]
输出:[]
解释:
使用给定的 digits 无法构造偶数。
示例 4:
输入:digits = [0,2,0,0]
输出:[200]
解释:
唯一一个不含 前导零 且满足全部条件的整数是 200 。
示例 5:
输入:digits = [0,0,0]
输出:[]
解释:
构造的所有整数都会有 前导零 。因此,不存在满足题目条件的整数。
提示:
3 <= digits.length <= 100
0 <= digits[i] <= 9


2. 解题


  • 对每个数字计数
  • 暴力枚举每个位置的数字,更新数字剩余的个数
class Solution {
public:
    vector<int> findEvenNumbers(vector<int>& digits) {
        vector<int> ct(10);
        for(auto d : digits)
        {
            if(ct[d] < 3) ct[d]++;
        }
        vector<int> ans;
        for(int i = 1; i <= 9; ++i)
        {
            if(ct[i] == 0) continue;
            ct[i]--;
            for(int j = 0; j <= 9; ++j)
            {
                if(ct[j] == 0) continue;
                ct[j]--;
                for(int k = 0; k <= 9; ++k)
                {
                    if(ct[k] && (k&1)==0)
                        ans.push_back(i*100+j*10+k);
                }
                ct[j]++;
            }
            ct[i]++;
        }
        return ans;
    }
};

0 ms 8.8 MB C++


相关文章
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Leetcode题目"剑指 Offer 21. 调整数组顺序使奇数位于偶数前面"的两种Python解决方案,一种是使用双端队列调整数组顺序,另一种是使用双指针法将奇数移到数组前半部分,偶数移到后半部分。
29 4
|
7月前
leetcode-5942:找出 3 位偶数
leetcode-5942:找出 3 位偶数
79 0
|
7月前
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
45 0
|
算法
图解LeetCode——剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
图解LeetCode——剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
104 1
|
Python
Python|力扣周赛-统计位数为偶数的数字
Python|力扣周赛-统计位数为偶数的数字
93 0
|
Java Python
【LeetCode每日一题】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(持续更新)
【LeetCode每日一题】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(持续更新)
82 0
|
算法 PHP
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
118 0
LeetCode 1295. 统计位数为偶数的数字
LeetCode 1295. 统计位数为偶数的数字
|
算法 前端开发 程序员
「LeetCode」剑指Offer-21调整数组顺序使奇数位于偶数前面⚡️
「LeetCode」剑指Offer-21调整数组顺序使奇数位于偶数前面⚡️
95 0
「LeetCode」剑指Offer-21调整数组顺序使奇数位于偶数前面⚡️
[路飞]_leetcode-剑指 Offer 21-调整数组顺序使奇数位于偶数前面
leetcode-剑指 Offer 21-调整数组顺序使奇数位于偶数前面