找出数组中特定和数字下标(JAVA)

比如:

输入: numbers={2, 7, 11, 15}, target=9

输出: index1=1, index2=2

 1 public class _003TwoSum {
 2
 3     public static void main(String[] args) {
 4         int a[]={3,22,4,7,8,22};
 5
 6         display(twoSum3(a,30));
 7     }
 8       //暴力搜索法
 9      public static int[] twoSum(int[] numbers, int target) {
10           int index[] = {0,0};
11             for(int i=0; i<numbers.length; i ++){
12                 for(int j=i+1; j<numbers.length; j++){
13                     if(target == numbers[i]+numbers[j]){
14                         index[0] = i+1;
15                         index[1] = j+1;
16                         return index;
17                     }
18                 }
19             }
20             return index;
21
22         }
23
24      //使用map,因为刚好是两个值,一个值一个下表map刚好可以储存然后用map的containsKey的方法
25      public static  int[] twoSum2(int[] numbers, int target) {
26             int index[] = {0,0};
27             HashMap<Integer, Integer> num = new HashMap<Integer,Integer>();
28             for(int i=0;i<numbers.length;i++){
29                 num.put(numbers[i], i);
30             }
31             for(int i=0;i<numbers.length;i++){
32                 int temp = target-numbers[i];
33                 if(num.containsKey(temp)&&i<num.get(temp)){
34                     index[0] = i+1;
35                     index[1] = num.get(temp)+1;
36                     break;
37                 }
38             }
39             return index;
40         }
41
42
43      public static void display(int a[])
44      {
45          for(int i=0;i<a.length;i++)
46              System.out.println(a[i]);
47      }
48
49
50    86 }
时间: 2024-10-22 01:49:42

找出数组中特定和数字下标(JAVA)的相关文章

经典算法学习——快速找出数组中两个数字,相加等于某特定值

这个算法题的描述如下:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值.目前我假设数组中的都是各不相等的整数.这道题是我在一次面试中被问到的,由于各种原因,我没回答上来,十分尴尬.其实这道题十分简单,我们使用相对巧妙的方法来实现下.注意不使用两层循环的元素遍历.示例代码上传至:https://github.com/chenyufeng1991/SumTo100 . 算法描述如下: (0)首先对原数组进行排序,成为递增数组: (1)对排序后的数组头部i [0]和数组尾部j [n-1]

找出数组中重复的数字(c语言)

让人瑟瑟发抖的面试题... 来我们看一下题目在一个 长度为n的数组里的所有数字都在0~n-的范围内.数组中某些数字是重复的,但不知道有几个数字重复伦理,也不知道每个数字重复了多少次,找出任意一个重复的数字注意:时间复杂度O(n),空间复杂度O(1) 怎么解决勒???分析:利用题目中0~n-1范围,可以运用数组下标和数组内容进行比较if (arr[i] != arr[arr[i]]),如果不相等时,进行调换,相等时,直接返回值来看看代码 #include<stdio.h> #define SIZ

【编程题目】找出数组中两个只出现一次的数字 ★★(自己没做出来)

61.找出数组中两个只出现一次的数字(数组)题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是 O(n),空间复杂度是 O(1). 思路:瞄到了一眼提示,说是位运算. 根据异或的运算性质: a ⊕ b ⊕ a = b 把所有的数字都异或一遍得到的结果就是 那两个只出现一次的数字异或的结果. 可怎么分出那两个数字就卡住了. 看了下网上答案,要根据得到的异或值把数字分为两组,再对每一组异或就可以得到这两个数字了! 代码如下: /* 61

面试题3:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

package siweifasan_6_5; /** * @Description:在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2. * @Parameters: // Parameters: // numbers: an array of integers //

剑指offer(Java版)第一题:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 *请找出数组中任意一个重复的数字。 *例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。

/*在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3.*/ import java.util.*; public class Class1 { static class findRepeatedNumber{ public int findRepeatedN

找出数组中唯一的重复元素

[问题] 1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次. 每个数组元素只能访问一次,设计一个算法,将它找出来:不用辅助存储空间,能否设计一个算法实现? [代码] #include <stdio.h> #include <stdlib.h> #include <string.h> /*根据异或法的计算方式,每两个相异的数执行异或运算之后,结果为1: 每两个相同的数异或之后,结果为0,任何数与0异或,结果仍为自身. 所以数组a[N]

找出数组中唯一重复的数(转)

题目: 数组a[N],1至N-1这N-1个数存放在a[N]中,其中某个数重复一次.写一个函数,找出被重复的数字. 方法一:异或法. 数组a[N]中的N个数异或结果与1至N-1异或的结果再做异或,得到的值即为所求. 设重复数为A,其余N-2个数异或结果为B. N个数异或结果为A^A^B 1至N-1异或结果为A^B 由于异或满足交换律和结合律,且X^X = 0  0^X = X; 则有 (A^B)^(A^A^B)=A^B^B=A 代码: #include <stdio.h> #include &l

1142: 零起点学算法49——找出数组中最大元素的位置(下标值)

1142: 零起点学算法49--找出数组中最大元素的位置(下标值) Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 1937  Accepted: 977[Submit][Status][Web Board] Description 找出数组中最大的元素的下标. Input 多组测试,每组先输入一个不大于10的整数n 然后是n个整数 Output 输出这n个整数中最大的元素及下标值 Sample I

python找出数组中第二大的数

#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找出数组中第2大的数字 ''' def find_Second_large_num(num_list):   '''''   找出数组中第2大的数字   '''   #直接排序,输出倒数第二个数即可   tmp_list=sorted(num_list)   print 'Second_large_num is:', tmp_list[-2]   #设置两个标志位一个存储最