精华内容
下载资源
问答
  • 譬如:一个一维数组a[100],如何快速的找到 最大的10个数和最小的五个数,输出这个15个数的数组下标?
  • 最大的个数 先与小者进行比较,如果比最小的大, 再与大者进行比较有两种情况。 其实,maxFirst, maxSecond的形式也类似小顶堆的思路。 时间复杂度:O(n) 空间复杂度:2 func FindMaxs() { arr := []int{1,...

    最大的两个数

    先与小者进行比较,如果比最小的大, 再与大者进行比较有两种情况。

    其实,maxFirst, maxSecond的形式也类似小顶堆的思路。

    时间复杂度:O(n)

    空间复杂度:2

    func FindMaxs() {
    	arr := []int{1, 2, 3, 4, 5, 6, 6}
    	maxFirst, maxSecond := 0, 0
    	for _, v := range arr {
    		if v > maxSecond {  // 先与小者进行比较,如果比最小的大, 再与大者进行比较有两种情况
    			if v <= maxFirst {
    				maxSecond = v
    			} else {
    				maxSecond = maxFirst
    				maxFirst = v
    			}
    		}
    	}
    	print(maxFirst, maxSecond)  // 输出:6 6
    }

    最大的k个数

    建一个k个元素的小顶堆,遍历数组的每个值如果大于堆顶则取代堆顶,对新堆顶进行向下调整。

    时间复杂度:O(nlogk)

    空间复杂度:k

    展开全文
  • 输入包括两行,第一行为数组大小n,接下来一行输入n个数,以空格隔开 输出 输出数组中最大值与最小值差,结果保留两位小数 样例输入 3 1 2 5 样例输出 4.00 #include&lt;stdio.h&gt; #define ...

    输入

    输入包括两行,第一行为数组的大小n,接下来一行输入n个数,以空格隔开

    输出

    输出数组中最大值与最小值的差,结果保留两位小数

    样例输入

    3
    1 2 5

    样例输出

    4.00
    #include<stdio.h>
    #define N 400
    double CH(double a[],int n);
    int main()
    {
       double a[N];
       int n, i;
       scanf("%d",&n);
       for(i=0;i<n;i++)
           scanf("%lf",&a[i]);
       printf("%.2lf",CH(a,n));
       return 0;
    }
    double CH(double a[],int n)
    {
       int i;
       double max = a[0];
       double min = a[0];
       double c;
       for (i = 0; i < n; i++)
       {
           if(max < a[i])
               max = a[i];
           if(min > a[i])
               min = a[i];
       }
       c = max - min;
       return c;
    }
    

     

    展开全文
  • 2、当k= 数组元素个数,输出数组的最大值即可 3、其他情况话,考虑第一段所有情况,要保证第一段后面元素大于等于k-1,不然不能分成k-1段。对后面k-1段使用递归函数 package Array; public class KPart {...

    思路:递归

    k :要分的段数

    1、当k = 1,则输出该数组的和

    2、当k = 数组元素个数,输出数组的最大值即可

    3、其他情况的话,考虑第一段的所有情况,要保证第一段后面的元素大于等于k-1,不然不能分成k-1段。对后面的k-1段使用递归函数

    package Array;
    
    public class KPart {
        /**
         * 把一个数组分为k段,使所有段的和的最大值最小。
         */
    
        public static int kPart(int[] arr, int start,int end, int k){
            if(k == 1){
                int sum = 0;
                for(int i = start; i <= end; i++){
                    sum += arr[i];
                }
                return sum;
            }
            if((end - start + 1) == k){
                int max = Integer.MIN_VALUE;
                for(int i = start; i <= end; i++){
                    if(arr[i] > max){
                        max = arr[i];
    
                    }
                }
                return max;
            }
            int min = Integer.MAX_VALUE;
            for(int i = start; i <= end  + 1 - k; i++){
              //  System.out.println("进入该循环");
                int sum = 0;
                for(int j = start; j <= i; j++){
                    sum += arr[j];
                }
                int larger = sum > kPart(arr,i + 1, end,k - 1) ? sum : kPart(arr,i + 1, end,k - 1);
                if(larger < min){
                    min = larger;
    
                }
            }
            return min;
    
        }
        public static void main(String[] args){
            int[] arr = {1,2,3,4,-8};
            System.out.print(kPart(arr,0,arr.length - 1,3));
        }
    }
    

     

    展开全文
  • 数组-----找出数组中最大和最小的数

    千次阅读 2018-07-27 11:20:25
    取双元素法,维持两个变量max min ,min 标记最小,max标记最大,每次比较相邻两个数,较大者与max比较,较小者与min比较,找出最大最小值,比较次数为1.5N次  ...

    取双元素法,维持两个变量max 和min ,min 标记最小,max标记最大,每次比较相邻两个数,较大者与max比较,较小者与min比较,找出最大最小值,比较次数为1.5N次

     

    展开全文
  • 数组中找出最大的和最小的数

    千次阅读 2014-06-08 10:05:41
    给定一整形数组a,要求从中找出最大的数和最小的数,并计算时间复杂度。 实现1: 遍历数组,每次取数组中一元素, 分别与当前最大值和最小值进行比较,时间复杂度O(2n) 1: void search(int a[], size_t n, ...
  • 然后分别比较前后两数组,找最大和最小 需要比较 1.5N次 注意:奇数、偶数通过 i 和 j 区别处理了, 不用单独再写一 #include <iostream> using namespace std; void getMaxAndMinNum(int * ...
  • 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k...
  • 编写程序,在O(n)时间内从数组x[0...n-1]找出第K个最小的元素。算法可以对x的元素进行排序 int bigrand( ) { return RAND_MAX*rand() +rand(); } int randint(int l,int u) { return 1+bigrand() %(u-l...
  • 数组中相差最小的个数O(N)

    千次阅读 2019-04-17 15:57:54
    1. 遍历该数组 ,找出该数组中最小和最大值,则所求整数差值一定小于等于max - min; 2. 从头开始 , 一元素与(max + min) / 2 比较,如果小于,则表示所求整数差值介于min 到 a[i]之间 ,...
  • 那么我们来分析,如果实在一没有重复元素出现的数组中,我们发现一般情况下,最大的和最小的一般不是同一,所以有好几种方法来求。 第一种:整个数组扫两遍,那么时间复杂度为O(2*N)。肯定不行。 第二种:用分...
  • 算法题:求数组中最小的k个数

    千次阅读 2014-08-06 21:15:51
    题目:输入n个整数,找出其中最小的k个数。 《剑指offer》给出了两种实现算法: 算法1:采用Partition加递归法,该算法可以说是快速排序二分查找的有机结合。算法的时间复杂度为O(n),缺点在于在修改Partition的...
  • 剑指Offer_编程题 ...题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路:sort 输出 class Solution { public: vector<int>...
  • 1、找出最大值和最小值 然后做差, 每次比较相邻的两个数(比如先0,1 然后2,3),然后每次比较记录下最大和最小的差值,可以比较1.5N次得到结果,和分为奇数偶数位比较一样的复杂度 2、由于抽屉原来,设最大的...
  • 从一个数组中选择出最大和最小个数的一般实现方法是从数组第一个元素到最后一个挨个比较,用两个数分别记录max、min,时间复杂性为O(n).其实还有效率更高方法,下面将介绍方法时间复杂性为O(log(n))   ...
  • 腾讯2017暑期实习生编程题第三题小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?输入例子: 6 45 12 45 32 5 6输出例子: 1 2思路:先排序,分一般情况特殊情况,...
  • 最小的k个数 题目描述 输入n个整数,找出其中最小的K个数。(不是topk问题!!,topk是最大的k个数。...)n个数,每次调整堆时间复杂度是logk,故总时间复杂度O(n*log k),堆是完全二叉树的一...
  • 对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致。 给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数 class Number{ public: int index; ...
  • 问题:对于一个由N个整数组成的数组,需要比较多少次才能把最大值和...这样需要2*N次的比较才能求出最大的数和最小的数。void FindMinMax(int A[],int size,int &amp;min,int &amp;max) { min=A[0]; m...
  • 查找数组中最小的k 元素 输入n 整数,输出其中最小的k 。 例如输入1,2,3,4,5,6,7 8 这8 数字,则最小的4 数字为1,2,3 4。 经典的TopK问题,因为需要最小的K元素,所以只需创建...
  • 无序数组最小的k个数

    2016-03-30 10:34:43
    import java.util.*; ...* 然后从k+1~n遍历 队列中最大的比较 如果小于最大值 说明这个数在k个数中 将最大值出列 将这个值加入队列 * 遍历结束 得到k个数中的最大值 遍历原数组将比最大值小的输
  • 一开始没怎么考虑是负数的问题,然后就有个mus整数表示最小的负数,然后所有的数都加上这个数。。。 初步代码,有点简陋,大概能简单重写一下。 后来发现 ...
  • n个数组随机分成2组子数组使子数组的乘机最大 思路分析: 2个子数组preA[]finA[]的总和为sum(a[n])为固定的,要使sum(preA[])*sum...1、将长度为n的数组从小到大排序,首先将最大的数放入一个子数组中,倒...
  • 数组中任意n-1元素的最大乘积

    千次阅读 2013-05-09 01:01:20
    思路:求出数组中的最大负数和最小正数,然后把其他数的乘起来,如果乘积是负数,则乘以最大负数,如果乘积是正数,则乘以最小正数。     #define MAX 0x7FFFFFFF int maxMulit(int *a ,int n){
  • 查找数组中最大的2个元素 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,78这8个数字,最大的2个元素为7、8。 1、可以遍历次数组,同时定义两个变量。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 777
精华内容 310
关键字:

数组中最大的n个数和最小的n个数