当前位置: 首页 > news >正文

建立网站平台pc 手机网站建设

建立网站平台,pc 手机网站建设,怎么做网站的导航,福州做网站建设服务商2578. 最小和分割 - 力扣(LeetCode) 给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所…

2578. 最小和分割 - 力扣(LeetCode)


给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足:

  • num1 和 num2 直接连起来,得到 num 各数位的一个排列。
    • 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。
  • num1 和 num2 可以包含前导 0 。

请你返回 num1 和 num2 可以得到的和的 最小 值。

注意:

  • num 保证没有前导 0 。
  • num1 和 num2 中数位顺序可以与 num 中数位顺序不同。


思路分析总结来自:(https://leetcode.cn/problems/split-with-minimum-sum/)

  • 1.满足nums1 和 nums2的位数小于<= bit_len(num) / 2 尽可能最短
  • 2.依次给nums1 和 nums2 分配较小的数给高位

(1)用一个 nums数组 来存放num的各个位的数字,然后 sort排序,再根据思路分析将其转化为num1 num2

class Solution {
public:int splitNum(int num) {vector<int> nums;while(num){nums.push_back(num%10);num = num / 10;}sort(nums.begin(),nums.end());int num1=0,num2=0;for(int i=0;i<nums.size();i++) {if(i%2==0) num1 = num1 * 10 + nums[i];else num2 = num2 * 10 + nums[i];}return num1 + num2;}
};

这段文字来自这篇博客:位运算&1,」」1,「「1

n&1 就是判断 n 是否为奇数.

  • n 为奇数时,对应的二进制数最低位一定为1,n&1的结果就是1。
  • n为偶数时,相应的最低位为0,n&1的结果就是0。
  • n&1 ==1 或者写 n%2 == 1 或者写 n%2

可以将i%2 == 1 写成 i&1

class Solution {
public:int splitNum(int num) {vector<int> nums;while(num){nums.push_back(num%10);num = num / 10;}sort(nums.begin(),nums.end());int num1=0,num2=0;for(int i=0;i<nums.size();i++) {if(i&1) num2 = num2 * 10 + nums[i];else num1 = num1 * 10 + nums[i];}return num1 + num2;}
};

(2) 将num先转成字符串,接着根据思路分析,拼接两个字符串s1和s2,最后转成int,相加后返回

class Solution {
public:int splitNum(int num) {string s = to_string(num);sort(s.begin(),s.end());string s1,s2;for(int i=0;i<s.size();i++) {// if(i&1) s2 += s[i];// else s1 += s[i];i&1?s2 += s[i] : s1 += s[i];}return stoi(s1) + stoi(s2);}
};

(3)将num先转成字符串,接着根据思路分析,获得num1和num2,相加后返回

class Solution {
public:int splitNum(int num) {string s = to_string(num);sort(s.begin(),s.end());int num1=0,num2=0;for(int i=0;i<s.size();i++) {// if(i&1==1) num2 = num2 * 10 + s[i]-'0';// else num1 = num1 * 10 + s[i]-'0';i&1? num2 = num2 * 10 + s[i]-'0' : num1 = num1 * 10 + s[i]-'0';}return num1 + num2;}
};

(4)将(3)进行进一步优化,省去三目运算

class Solution {
public:int splitNum(int num) {string s = to_string(num);sort(s.begin(),s.end());int a[2]{};for(int i=0;i<s.size();i++) {// a[i % 2] = a[i % 2] * 10 + s[i] - '0'; a[i&1] = a[i&1] * 10 + s[i]-'0';}return a[0] + a[1];}
};
  • 时间复杂度:O(mlog⁡m),其中 m 为 num 转成字符串后的长度。
  • 空间复杂度:O(m)
http://www.yayakq.cn/news/33930/

相关文章:

  • html搭建网站网站中英文转换js
  • 做百度竞价网站修改影响排名吗免费汽车租赁网站模板
  • 嘉盛建设集团官方网站红安县城乡建设局网站
  • 临沂小学网站建设ssh框架做的家政服务网站
  • 建设网站需要哪些费用大学部门宣传视频创意
  • 做网站按什么收费安徽建设网证书查询
  • 网络公司网站创建让别人做网站需要注意什么问题
  • 青岛做网站建设的公司做静态网站的开题报告
  • 百度云建站漳州北京网站建设公司
  • 自己做网站难不难长寿网站建设
  • ifront做原型控件的网站天津网
  • 重庆 网站设计国外网站开发技术现状
  • php商城网站的要求与数据html手机网站如何制作
  • 网建网站sem和seo的工作
  • 深圳市罗湖区网站建设网页版游戏排行榜传奇
  • 厦门网站建设公司推荐wordpress取消page
  • 安徽住房和城乡建设厅注册网站seo快速排名软件首页
  • 网站建设注意哪些问题助贷获客系统
  • 专业网站推广公司网站建设与管理的论文
  • 济南网站制作厂家兴安盟住房和城乡建设部网站
  • 服务器网站建设教程视频网站后台更新前台不显示
  • 国外php网站源码北京网络维护公司
  • 做网站销售那里找客户wordpress侧边栏折叠菜单
  • 肇庆企业自助建站wordpress线下安装教程
  • 网站后台登录地址修改京东云服务器怎么做网站
  • 自己建设个人网站要花费多少优化大师下载安装
  • 小城市网站建设学校网站管理系统免费版
  • 专门做国外网站闵行北京网站建设
  • 如何看一个网站的备案在哪里做的wap网站设计
  • 网站开发和网页设计的区别苏州网站建设报价单