zoukankan      html  css  js  c++  java
  • 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数

    最大数

    力扣

    给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

    示例 1:

    输入: [10,2]
    输出: 210
    

    示例 2:

    输入: [3,30,34,5,9]
    输出: 9534330
    

    说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

    eoj 18年复试机试真题

    单点时限: 1.0 sec

    内存限制: 256 MB

    我想和你在一起
    直到我不爱你
    宝贝 人和人 一场游戏
    我愿意为你死去
    如果我还爱你
    宝贝 反正活着 也没意义
    宝贝 我也只能 这样为你
    ——李志《和你在一起》

    img

    现场4分10秒,小哥跟着逼哥嘶吼,泪流满面。我要和你在一起,直到我不爱你。有这么 n 个数字,联成一排拼到一起便是我爱你的时间,那么我们会在一起多久呢

    例如: n=3 时,3 个整数 13,312,343 联接成的最长时间为: 34331213。
    又如: n=4 时,4 个整数 7,13,4,246 联接成的最长时间为: 7424613。

    输入格式

    n (1≤n≤20),表示 n 个数。

    接下来一行 n 个正整数,大小不超过 104。

    输出格式

    拼成的最长时间。

    样例

    input

    3
    623 583 413
    

    output

    623583413
    

    解题思路

    两题一个意思 只不过力扣不需要输入

    用 stl 巧解 用字符串拼接来比较 其实难的在数学证明 这里且先记下这种由小范围推到全局(有点类似贪心这意思)

    /* 力扣 leetcode */
    bool cmp(string a, string b)//直接相加比较
    {
    	return a+b > b+a; // 范围二者拼接较大的那个
    }
    
    class Solution {
    public:
    string largestNumber(vector<int>& nums) {
    	vector<string> v;
    	for (int i = 0; i < nums.size(); i++)
    	{
    		string temp = to_string(nums[i]); // 将输入的int转为string
    		v.push_back(temp); // 推进vector中
    	}
    	sort(v.begin(), v.end(), cmp); // 关键排序
    	string ret; // 答案集
    	for (int i = 0; i < v.size(); i++)
    	{
    		ret += v[i]; // 直接按序拼接即可 数学理论暂不证明
        if (v[0] == "0") // 经过上面的cmp 如若第一位为 0 后面也不用算了 最大就是0了
    		break;
    	}
    	return ret;
    }
    };
    
    
    /* 需要输入的oj */
    #include <bits/stdc++.h>
    using namespace std;
    bool cmp(string a, string b)
    {
      return a+b > b+a;
    }
    int main()
    {
      int n; cin >> n;
      vector<int> nums;
      vector<string> v;
      for (int i = 0; i < n; i++)
      {
          int tmp; cin >> tmp;
          nums.push_back(tmp);
      }
      
      for (int i = 0; i < nums.size(); i++)
      {
        string temp = to_string(nums[i]);
        v.push_back(temp);
      }
      sort(v.begin(), v.end(), cmp);
      string ret;
      for (int i = 0; i < v.size(); i++)
      {
        ret += v[i];
        if (v[0] == "0") 
          break;
      }
      cout << ret;
      return 0;
    }
    
  • 相关阅读:
    Objective-C NSFileManager 文件管理总结
    ScrollView在RelativeLayout失效问题
    解决myeclipse中struts2 bug问题包的替换问题
    SOA究竟是个啥
    Flash--元件和实例
    MyEclipse中加入web项目到tomcat
    [C]if (CONDITION)语句中CONDITION的情况
    GTK经常使用控件之笔记本控件( GtkNotebook )
    org.apache.solr.handler.dataimport.DataImportHandlerException: Data Config problem: 对实体 &quot;characterEn
    Android自动测试之Monkey工具
  • 原文地址:https://www.cnblogs.com/coderzjz/p/12857199.html
Copyright © 2011-2022 走看看