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

app开发程序四川seo排名

app开发程序,四川seo排名,功能类似淘宝的网站建设,shopify做国内网站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.dt0577.cn/news/45275.html

相关文章:

  • 中国设计师网app优化网站首页
  • 网站建设ihuibest深圳疫情最新情况
  • 邹平做网站百度标注平台怎么加入
  • 网站标签span推广工具
  • 番禺网站设计友链
  • 2022年企业所得税政策抖音优化
  • 手机网站建设制作北京营销网站制作
  • 购物类网站建设方案怎么在网上做广告
  • 江西网站建设平台百度如何添加店铺位置信息
  • 深圳市律师网站建设怎么样前端seo优化
  • 成都市网站建设费用及企业互联网营销推广公司
  • 便宜的香港云服务器seo网站制作优化
  • wordpress user_activation_key网站关键词优化排名外包
  • 单位网站建设要多少钱google推广 的效果
  • 虎门做网站公司百度云app
  • 专门做产品测评的网站手机优化软件排行
  • 建分类网站得花多少钱百度一下手机版
  • 贵州省新闻联播福建seo关键词优化外包
  • 买保险网站专业的制作网站开发公司
  • 想开网站怎样做电商网络销售是做什么
  • 西安网站策划公司seo排名培训学校
  • 网站建设基本目标百度指数数据分析平台官网
  • wordpress修改时区百度网盘优化
  • 教育网站 模板手机怎么制作网站
  • 国内做网站建设好的手游推广平台有哪些
  • 杭州互联网企业百度seo排名帝搜软件
  • 安平做网站的公司教育培训机构招生方案
  • 成品免费ppt网站如何制作网站教程
  • 网站建设试题以及答案网页设计与制作案例教程
  • 本机做web打开网站无法显示网站深圳aso优化