C++实现数组中元素组合出最大值

目录
  • 数组中元素组合出最大值
    • 如题:这可以算是一个算法类
  • 数组或vector求最大值最小值
    • 1.求数组的最大值或最小值
    • 2.求数组最大值最小值对应的下标

数组中元素组合出最大值

如题:这可以算是一个算法类

class Solution {
public:
    string largestNumber(vector<int>& nums) {
        string res;
        sort(nums.begin(), nums.end(), [](const int& x, const int& y) {//自定义一个排序序列方式
            long long sx = 10, sy = 10;
            while (sx <= x)sx *= 10;//sx,sy的实质就是对应x,y的位数,如果x<10,那么他就是一位,
            while (sy <= y)sy *= 10;//y跟他组合放在他前面y需要后面加一个0即可
            return x * sy + y > y * sx + x;
            });
        if (!nums[0])return "0";排除数组元素全是0的情况
        for (int i = 0; i < nums.size(); i++) {
            res += to_string(nums[i]);
        }
        return res;
    }
};

数组或vector求最大值最小值

可以用max_element()及min_element()函数,二者返回的都是迭代器或指针。

头文件:#include<algorithm>

1.求数组的最大值或最小值

1)vector容器

vector<int> v;
  • 最大值:
int maxValue = *max_element(v.begin(),v.end()); 
  • 最小值:
int minValue = *min_element(v.begin(),v.end());

2)普通数组

a[]={1,2,3,4,5,6};
  • 最大值:
int maxValue = *max_element(a,a+6); 
  • 最小值:
int minValue = *min_element(a,a+6);

2.求数组最大值最小值对应的下标

1)vector容器

vector<int> v;
  • 最大值下标:
int maxPosition = max_element(v.begin(),v.end()) - v.begin(); 
  • 最小值下标:
int minPosition = min_element(v.begin(),v.end()) - v.begin();

2)普通数组

a[]={1,2,3,4,5,6};
  • 最大值下标:
int maxPosition = max_element(a,a+6) - a; 
  • 最小值下标:
int minPosition = min_element(a,a+6) - a;

注意:返回的是第一个最大(小)元素的位置。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现从数组中同时取出最大最小元素算法示例

    本文实例讲述了C++实现从数组中同时取出最大最小元素的方法.分享给大家供大家参考,具体如下: 算法思想:先相邻两个两个比较,较大的放入数组max[],较小的放入数组min[],然后从max[]数组求出最大,min[]数组求出最小即可. 比较n+[(n+1)/2] =1.5n次 #include <iostream> #define n 11 #define m ((n+1)/2) using namespace std; void main(void) { int num[] = {11,2,

  • C++中的数组你真的理解了吗

    目录 1 概述 2 一维数组 2.1 一维数组定义方式 2.2 一维数组组名 2.3 冒泡排序 3 二维数组 3.1 二维数组定义方式 3.2 二维数组数组名 3.3二维数组应用举例 总结 1 概述 所谓数组,就是一个集合,里面存放了相同类型的数据元素. 特点1:数组中的每个数据元素都是相同的数据类型. 特点2:数组是由连续的内存位置组成的. 2 一维数组 2.1 一维数组定义方式 一共有三种 1.数据类型 数组名[数组长度]; 2.数据类型 数组名[数组长度]={值1,值2,值3,...};

  • C++按照正态分布来排列整型数组元素

    题目要求如下: 给定一个数组input[], 如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置, 如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上, 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数. 这种处理后结果,如果按照元素的值表示一种分布的图形的话,那绘制后的图形应该是正态分布. 关于正态分布: 正态分布(Normal distribution)又名高斯分布(Gaussia

  • 详解C++编程中数组的基本用法

    可以使用数组下标操作符 ([ ]) 访问数组的各个元素. 如果在无下标表达式中使用一维数组,组名计算为指向该数组中的第一个元素的指针. // using_arrays.cpp int main() { char chArray[10]; char *pch = chArray; // Evaluates to a pointer to the first element. char ch = chArray[0]; // Evaluates to the value of the first e

  • C++实现数组中元素组合出最大值

    目录 数组中元素组合出最大值 如题:这可以算是一个算法类 数组或vector求最大值最小值 1.求数组的最大值或最小值 2.求数组最大值最小值对应的下标 数组中元素组合出最大值 如题:这可以算是一个算法类 class Solution { public: string largestNumber(vector<int>& nums) { string res; sort(nums.begin(), nums.end(), [](const int& x, const int&a

  • C#求数组中元素全排列的方法

    本文实例讲述了C#求数组中元素全排列的方法.分享给大家供大家参考.具体如下: 1.算法描述 全排列的第一项是该数组的升序排列,最后一项是该数组的降序排列.本文中用到的了一个函数FindNextArray:从升序排列开始,不断使用函数FindNextArray,可以遍历全部排列,最终到达数组中元素的降序排列. FindNextArray函数的实现思路: 设有数组array为原数组的一个排列 1)找出数组的最大值 2)从后向前找:找到第一组array[i]>array[i-1]的数,以i位置为sig

  • Javascript循环删除数组中元素的几种方法示例

    本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面来看看详细的介绍: 发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运行. 下面以一段Javascript代码为例演示这一过程. (function () { var arr = [1,2,2,3,4,5]; var len = arr.lengt

  • python 统计数组中元素出现次数并进行排序的实例

    如下所示: lis = [12,34,456,12,34,66,223,12,5,66,12,23,66,12,66,5,456,12,66,34,5,34] def test1(): #进行去重 c = [] for i in lis: if i not in c: c.append(i) #进行统计,生成二维列表 b = [] for i in c: num = 0 for j in range(len(lis)): if lis[j] == i: num += 1 a = [] a.app

  • PHP中unset,array_splice删除数组中元素的区别

    如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d )   那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice(): <?php $arr = array('a','b','c','d

  • Java中如何比较两个数组中元素是否相同

    呵呵呵,实现Java比较两个数组中的元素是否相同的功能你是怎么做的?看下面最简单方法: 复制代码 代码如下: import java.util.Arrays; public class Test { /** * Java比较两个数组中的元素是否相同 */ public static void main(String[] args) { String [] array1 = {"1","2","3"}; String [] array2 = {&q

  • C语言将数组中元素的数排序输出的相关问题解决

    问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个.例如输入数组{32,  321},则输出这两个能排成的最小数字32132.请给出解决问题的算法,并证明该算法.       思路:先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输出字符串数组即可.这里注意的是字符串的比较函数需要重新定义,不是比较a和b,而是比较ab与 ba.如果ab < ba,则a < b:如果ab > ba,则a > b:如果ab = ba,则a = b.比较

  • asp 得到动态数组中元素的个数

    一个动态数组 a,如果你已经使用redim 语句给它设定了大小,那么在此之后使用 ubound(a) 就可以得到它的上边界. 如果你没有使用 redim 语句给它设定大小,直接使用 ubound(a) 函数,那么运行时会报错,并会中断程序的执行.我们恰恰利用这一点,可以知道这个数组还没有任何元素.于此同时,我们却不想程序中断执行,那么可以在 ubound(a) 函数执行前加上一句 复制代码 代码如下: on error resume next 把本功能写成一个函数 function get_el

  • JS中取二维数组中最大值的方法汇总

    在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度. 问题描述 假设你有一个数组,而且这个数组中包含了数字的子数组,而我们要做的是从数组中的每个子数组中返回其最大的那个最大数. 基本解决方案 function largestOfFour(arr) { var results = []; // 创建一个results变量来存储 // 创建一个外层循环,遍历外层数组 for (var n = 0; n < arr.length; n

  • JavaScript学习笔记之取数组中最大值和最小值

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 取数组中最大值 可以先把思路理一下: 将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值: 开始遍历数组,从第二个元

随机推荐