求数组中两个元素差的最大值

找到最大值找到最小值,然后相减即可。

1、如果是说,前面的减去后面的,差的最大值?

2、如果是说,后面的减去前面的,差的最大值?

这两个问题就不一样了。

基础的想法可以用暴力。但是有更好的方法。

针对1,从后往前遍历数组,记录遍历过的数组元素的最小值,用当前元素相减。

针对2,从前往后遍历数组,记录遍历过的数组元素的最小值,用当前元素相减。

时间: 2024-10-06 00:53:51

求数组中两个元素差的最大值的相关文章

数组中两个元素差的绝对值最小

#include <stdio.h> #include <stdlib.h> /* 给定一个含有n个元素的整型数组, 找出数组中的两个元素x和y使得abs(x - y)值最小 */ /* 思路: 排序, 然后遍历数组比较相邻值相减得到的值 */ typedef struct{ int num1; int num2; }TwoNumber; TwoNumber getTNumber(int* numbers, int length); int cmp(const void *a,co

用C随机产生的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。

用 C 求一组随机数的第二大值,不能通过对整体排序求得 1 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值.最小值.平均值以及各元素之和,及第二大值.        int a[20];    int sum = 0; //存储数组元素的和    //为数组赋值    printf("数组中的元素为:\n ");    for (int i = 0; i < 20; i ++) {        a[i] = arc4random() % 41 +

交换数组中两个元素的位置,元素包括key和value 一维数组

/*author: [email protected]description: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子*/$arr = array(11=>'a',22=>'b',33=>'c',44=>'d');$res = array_exchange($arr, 11 ,33); //example:echo '<pre>';print_r ($res);echo '</pre>'; function array_e

求数组中两两相加为某个数字的组合数

/** * 求数组中两两相加是20的组合数 * @param array * @param sum */ public static void getMethod_3(int[] array,int sum){ int count = 0; for(int i=0;i<array.length;i++){ if(i==array.length-1){ break; } for(int j=i+1;j<array.length;j++){ if(array[i]+array[j]==sum){

求数组中两两相加等于20的组合(Python实现)

题目 求数组中两两相加等于20的组合. 例:给定一个数组[1, 7, 17, 2, 6, 3, 14],这个数组中满足条件的有两对:17+3=20, 6+14=20. 解析 分为两个步骤: 先采用堆排序或快速排序对数组进行排序,时间复杂度为O(nlogn). 然后对排序的数组分别从前到后和从后到前进行遍历, 时间复杂度为O(n). 假设从前到后遍历的下标为begin,从后到前遍历的下标为end. 当arr[begin] + arr[end] < 20时,满足条件的数一定在[begin+1, en

Java之求数组中两个数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 通过使用空间换取时间,降低时间复杂度时间复杂度O(n)空间复杂度o(n) public int[] twoSum(int[] nums, int

求一个非负整数数组中不相邻元素之和的最大值

该题来自leetcode,原题如下: You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connecte

随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。

int a[20] = {0};//定义一个长度为20的数组a int max = 0;//用来存储数组a中所有元素的最大值 int min = 0;//用来存储数组a中所有元素的最小值 int sum = 0;//用来存储数组a各元素的和 float aver = 0.0;//用来存储数组a中所有元素的平均值 int secondMax = 0;//用来存储数组a的第二大值,第二大值 为 不同于最大值的剩余元素的最大值 for (int i = 0; i < 20; i++) {//用来循环获

python实现给定一个数和数组,求数组中两数之和为给定的数

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 代码实现: def twoSum(self, nums, target): nums_bak = nums.copy() nums.sort() i = 0 j = 0 for k in range(0,