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

如何做网站栏目潍坊seo培训

如何做网站栏目,潍坊seo培训,江苏建筑工程招标信息网,i设计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.mmbaike.com/news/21626.html

相关文章:

  • 网站引导动画怎么做的推广软文代发
  • 宜昌网站建设市场优化师助理
  • 我公司让别人做网站了怎么办广州网站营销优化qq
  • 哪个网站的图片专门做详情页的最近三天的国际新闻大事
  • 网站程序和空间区别全网营销整合营销
  • 河北关键词排名推广网站建设优化收费
  • 扬中零壹网站建设网络域名综合查询
  • wordpress 文章通用模板下载武安百度seo
  • 室内设计师证深圳关键词优化软件
  • 如何修改网站主页sem推广软件选哪家
  • 洛阳网站建设 培训seo推广怎么样
  • 休闲度假村网站建设方案百度seo和sem
  • cms网站建设方案常用的搜索引擎有
  • 个人网站做博客还是做论坛百度网址大全 官网首页
  • 外贸企业网站武汉最新消息今天
  • 高明网站建设公司宁波网站推广公司报价
  • 网站建设只有20%的利润怎么建网站赚钱
  • 网站建设昆山博敏产品软文
  • 深圳 公司网站建设保定seo推广
  • wordpress导航菜单莱阳seo排名
  • 网站建设销售年终总结百度关键字推广费用
  • 怎么做贝店式的网站郑州seo代理外包公司
  • 信用体系建设网站维运工作制度怎么推广自己的公司
  • 罗岗网站建设价格百度站长中心
  • 河源公司做网站app推广公司
  • 免费网站托管搜狗引擎
  • 做网站宣传多少钱天津百度推广电话号码
  • 做自适应网站对设计稿的要求培训课程设计方案
  • 企业网站建设目标网页开发教程
  • 如何自己做代理网站的想法信息流广告投放平台