leetcode 1363 形成三的最大倍数(C++)
给你一个整数数组 digits
,你可以通过按任意顺序连接其中某些数字来形成 3 的倍数,请你返回所能得到的最大的 3 的倍数。
由于答案可能不在整数数据类型范围内,请以字符串形式返回答案。
如果无法得到答案,请返回一个空字符串。
示例 1:
输入:digits = [8,1,9]
输出:"981"
示例 2:
输入:digits = [8,6,7,1,0]
输出:"8760"
示例 3:
输入:digits = [1]
输出:""
示例 4:
输入:digits = [0,0,0,0,0,0]
输出:"0"
提示:
1 <= digits.length <= 10^4
0 <= digits[i] <= 9
- 返回的结果不应包含不必要的前导零。
C++
class Solution {
public:string largestMultipleOfThree(vector<int>& digits) {map<int,int> tmp;int n=digits.size();int sum=0;for(int i=0;i<n;i++){tmp[digits[i]]++;sum+=digits[i];}string res;if(0==sum){return "0";}if(1==sum%3){if(tmp.find(1)!=tmp.end()){tmp[1]--;sum-=1;}else if(tmp.find(4)!=tmp.end()){tmp[4]--;sum-=4;}else if(tmp.find(7)!=tmp.end()){tmp[7]--;sum-=7;}else if(tmp.find(2)!=tmp.end() && tmp[2]>1){tmp[2]-=2;sum-=4;}else if(tmp.find(2)!=tmp.end() && tmp.find(5)!=tmp.end()){tmp[2]--;tmp[5]--;sum-=7;}else if(tmp.find(5)!=tmp.end() && tmp[5]>1){tmp[5]-=2;sum-=10;}else if(tmp.find(8)!=tmp.end() && tmp[8]>1){tmp[8]-=2;sum-=16;}}if(2==sum%3){if(tmp.find(2)!=tmp.end()){tmp[2]--;sum-=2;}else if(tmp.find(5)!=tmp.end()){tmp[5]--;sum-=5;}else if(tmp.find(8)!=tmp.end()){tmp[8]--;sum-=8;}else if(tmp.find(1)!=tmp.end() && tmp[1]>1){tmp[1]-=2;sum-=2;}else if(tmp.find(1)!=tmp.end() && tmp.find(4)!=tmp.end()){tmp[1]--;tmp[4]--;sum-=5;}else if(tmp.find(4)!=tmp.end() && tmp[4]>1){tmp[4]-=2;sum-=8;}else if(tmp.find(1)!=tmp.end() && tmp.find(7)!=tmp.end()){tmp[1]--;tmp[7]--;sum-=8;}else if(tmp.find(4)!=tmp.end() && tmp.find(7)!=tmp.end()){tmp[4]--;tmp[7]--;sum-=11;}else if(tmp.find(7)!=tmp.end() && tmp[7]>1){tmp[7]-=2;sum-=14;}}if(0==sum){if(tmp.find(0)!=tmp.end()){return "0";}return res;}if(sum%3){return res;}for(int k=9;k>=0;k--){for(int j=0;j<tmp[k];j++){res+=k+'0';}}return res;}};
leetcode 1363 形成三的最大倍数(C++)相关推荐
- LeetCode 1363. 形成三的最大倍数(贪心,难)
1. 题目 给你一个整数数组 digits,你可以通过按任意顺序连接其中某些数字来形成 3 的倍数,请你返回所能得到的最大的 3 的倍数. 由于答案可能不在整数数据类型范围内,请以字符串形式返回答案. ...
- leetcode No.15-16 三数之和相关问题
leetcode 15. 三数之和 题目 链接:https://leetcode-cn.com/problems/3sum 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...
- LeetCode——1737. 满足三条件之一需改变的最少字符数(Change Minimum Characters to Satisfy One of Three...)——分析及代码(Java)
LeetCode--1737. 满足三条件之一需改变的最少字符数[Change Minimum Characters to Satisfy One of Three Conditions]--分析及代 ...
- 刻意练习:LeetCode实战 -- Task04. 三数之和
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- LeetCode实战:三数之和
题目英文 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...
- 单调栈 leetcode整理(三)
目录 42. 接雨水 思路分析 901. 股票价格跨度 思路 581. 最短无序连续子数组 思路一:排序+双指针 思路二:单调栈 思路三:双指针(最省时) 42. 接雨水 42. 接雨水 给定 n 个 ...
- LeetCode MySQL 1623. 三人国家代表队
文章目录 1. 题目 2. 解题 1. 题目 表: SchoolA +---------------+---------+ | Column Name | Type | +-------------- ...
- LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)
文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 a 和 b ,二者均由小写字母组成. 一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 . 操作的最终目标是满足下列 ...
- leetcode系列--15.三数之和
leetcode 第15题 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三 ...
最新文章
- 字节流InputStream/OutputStream
- 数据结构源码笔记(C语言):统计字符串中出现的字符及其次数
- 5.20打卡 equals()方法与“==”的区别
- vscode终端无法输入
- python模块用法教程_Python学习之asyncore模块用法实例教程
- android java 调用js_Android Java/JS互相调用
- disable jboss JMXInvokerServlet .
- c++之QT软件封装(windows)
- [shell编程] 入门基础总结 (一) (一种豁然开朗的感觉)
- 怎样取消QQ的热键(快捷键)
- Java笔记23反射,设计模式
- ks108x芯片使用体会
- 阿里云账号注销踩坑实践记录
- word2016撤销无效解决办法
- 微信公众号最佳实践 ( 9.6)地图导航
- 温故知新-什么是软件工程
- 452. 用最少数量的箭引爆气球
- 如何准备面试?“-80,阿里Java开发面试解答
- 计算机软件ghb,GHB 文件扩展名: 它是什么以及如何打开它?
- ✨ StarRocks 9 月社区动态