求两数之和得出两数索引值

小伙伴们,我又来了,今天分享一波求两数之和如何得出两数索引值,两种方法通俗易懂,个人推荐使用map比较快捷就,减少了运行时间,下面是代码:`import java.util.Arrays;
import java.util.HashMap;

public class Test {
//求两数之和得出两数索引值
public static int[] twoSum(int[] nums, int target) {
//方法一 双层for循环
; int[] indexs = new int[2];//创立新的数组以便存储nums索引值
// for (int i = 0; i <nums.length ; i++) {
// for (int j = nums.length-1; j >i ; j–) {
// if (nums[i]+nums[j]==target){
// indexs[0] = i;
// indexs[1] = j;
// }
// }
// }
//方法二
// 建立k-v ,一一对应的哈希表
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0; i < nums.length; i++){ //遍历数组nums
if(map.containsKey(nums[i])){ // 判断map中是否存在nums[i]的值
indexs[0] = i; //如果不存在 将索引值添入indexs中,
indexs[1] = map.get(nums[i]); // 再将map添入数组nums中的值后的索引添入
return indexs;
}
// 将数据存入 key为补数 ,value为下标
map.put(target-nums[i],i);
}
return indexs;

    }

     public static void main(String[] args) {
        int[] nums = new int[]{10,6,2,4};
         int[] ints = twoSum(nums, 6);
         System.out.println(Arrays.toString(ints));
     }

}

如果有更好的方法欢迎分享,祝您学的开心!!!

### 回答1: 取中位数的一种常见方法是使用快速选择算法,这个算法的时间复杂度为O(n)。 具体实现如下: ```java public static double findMedian(int[] nums) { int n = nums.length; if (n % 2 == 0) { // 如果是偶数个数,中位数为中间两个数的平均 return (quickSelect(nums, 0, n - 1, n / 2) + quickSelect(nums, 0, n - 1, n / 2 - 1)) / 2.0; } else { // 如果是奇数个数,中位数为中间的那个数 return quickSelect(nums, 0, n - 1, n / 2); } } private static int quickSelect(int[] nums, int left, int right, int k) { if (left == right) { return nums[left]; } int pivotIndex = left + new Random().nextInt(right - left + 1); pivotIndex = partition(nums, left, right, pivotIndex); if (k == pivotIndex) { return nums[k]; } else if (k < pivotIndex) { return quickSelect(nums, left, pivotIndex - 1, k); } else { return quickSelect(nums, pivotIndex + 1, right, k); } } private static int partition(int[] nums, int left, int right, int pivotIndex) { int pivotValue = nums[pivotIndex]; swap(nums, pivotIndex, right); int storeIndex = left; for (int i = left; i <= right; i++) { if (nums[i] < pivotValue) { swap(nums, i, storeIndex); storeIndex++; } } swap(nums, storeIndex, right); return storeIndex; } private static void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } ``` 以上代码中,`findMedian` 方法用于取数组 `nums` 的中位数。如果 `nums` 的长度是偶数,则中位数为中间两个数的平均;如果 `nums` 的长度是奇数,则中位数为中间的那个数。 `quickSelect` 方法用于取第 `k` 小的数。它使用快速排序的思想,在平均情况下的时间复杂度为O(n)。在这里,我们使用随机化的方法选择枢轴元素,以避免最坏情况下时间复杂度为O(n^2)。 `partition` 方法用于将数组划分为两部分,左边部分的所有元素都小于枢轴元素,右边部分的所有元素都大于枢轴元素。这里使用了双指针的方法。 `swap` 方法用于交换数组中的两个元素。 ### 回答2: 使用Java编程语言实现中位数,可以通过以下步骤: 1. 创建一个函数,用于计算中位数。该函数接受一个整数数组作为输入参数。 2. 使用Arrays类的静态方法sort()对数组进行排序,将数组元素按照升序排列。 3. 使用条件判断语句判断数组长度的奇偶性。如果数组长度是奇数,则中位数为排序后数组的中间元素;如果数组长度是偶数,则中位数为排序后数组中间两个元素的平均。 4. 在条件判断语句中返回中位数。 以下是一个示例代码实现: ```java import java.util.Arrays; public class MedianCalculator { public static double calculateMedian(int[] nums) { Arrays.sort(nums); // 对数组进行升序排序 if (nums.length % 2 != 0) { // 数组长度为奇数 return nums[nums.length / 2]; } else { // 数组长度为偶数 int mid1 = nums[nums.length / 2 - 1]; int mid2 = nums[nums.length / 2]; return (double) (mid1 + mid2) / 2; } } public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5}; double median = calculateMedian(nums); System.out.println("中位数是: " + median); } } ``` 以上代码的输出结果为:中位数是: 3.0 ### 回答3: 中位数是指一组数据中的中间,即数据按照大小顺序排列后,处于中间位置的数。要用Java实现取中位数,可以按照以下步骤进行: 1. 首先,需要将给定的一组数据按照从小到大的顺序进行排序。可以使用Java自带的排序算法,如Arrays.sort()方法。 2. 排序后,判断数据的长度。如果数据的长度为奇数,中位数即为排序后位于中间位置的数;如果数据的长度为偶数,中位数即为排序后位于中间两个数的平均。 3. 根据数据的长度,计算得出中位数的。可以使用数组索引的方式来获取中位数的。 具体的Java代码实现如下: ```java import java.util.Arrays; public class MedianFinder { public double findMedian(int[] nums) { // 对数组进行排序 Arrays.sort(nums); int n = nums.length; // 如果数组长度为奇数,直接返回中间位置的数 if (n % 2 != 0) { return nums[n / 2]; } else { // 如果数组长度为偶数,返回中间两个数的平均 return (nums[n / 2 - 1] + nums[n / 2]) / 2.0; } } public static void main(String[] args) { int[] nums = {2, 4, 1, 5, 3}; MedianFinder finder = new MedianFinder(); double median = finder.findMedian(nums); System.out.println("中位数为:" + median); } } ``` 以上代码中,定义了一个`MedianFinder`类,并在其中实现了`findMedian`方法来取中位数。在`main`方法中,先定义一个测试数据数组`nums`,然后创建一个`MedianFinder`对象,并调用`findMedian`方法来获得中位数,并将结果打印输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值