Izzy_yang 2015-04-28 07:26 采纳率: 66.7%
浏览 2462

leetcode第一题java代码报错。求原因?

package com.hust.ali.test;
import java.util.*;

/**

  • 给定一个整数数组,发现两个数字,使得它们添加到一个特定的目标数。
  • 函数twoSum应返回两个数字,使得它们加起来的目标,其中索引1必须小于索引2的所有。
  • @author Cat
    *
    /
    public class TwoNumSum {
    /
    *

    • @param args
      */
      public static void main(String[] args) {
      int[] num = {0,4,3,0,6,9};
      TwoNumSum ts = new TwoNumSum();
      int[] result = ts.twoSum (num, 7);
      System.out.println(result[0]+" " + result[1]);
      }
      public int[] twoSum (int[] numbers,int target){
      IdentityHashMap hashNum = new IdentityHashMap();
      Integer[] temp = new Integer[numbers.length];

      for(int i=0;i temp[i] = new Integer(numbers[i]);
      hashNum.put(temp[i] , i);
      }
      Arrays.sort(numbers);
      Arrays.sort(temp);
      int i = 0 , j = numbers.length - 1;
      int[] result = new int[2];
      while( i if( numbers[i] + numbers[j] == target ){
      result[0] = hashNum.get(temp[i])+1;
      result[1] = hashNum.get(temp[j])+1;
      break;
      }else if (numbers[i] + numbers[j] > target ){
      j--;
      }else if(i < numbers.length-1){
      i++;
      }
      }
      Arrays.sort(result);
      return result;
      }
      }

  • 写回答

2条回答 默认 最新

  • lingfengzx 2015-04-28 07:49
    关注

    import java.util.*;

    /**

    • 给定一个整数数组,发现两个数字,使得它们添加到一个特定的目标数。 函数twoSum应返回两个数字,使得它们加起来的目标,其中索引1必须小于索引2的所有。
    • @author Cat
      /
      public class TwoNumSum {
      /

      • @param args */ public static void main(String[] args) { int[] num = { 0, 4, 3, 0, 6, 9 }; TwoNumSum ts = new TwoNumSum(); int[] result = ts.twoSum(num, 7); System.out.println(result[0] + " " + result[1]); }

      public int[] twoSum(int[] numbers, int target) {
      IdentityHashMap hashNum = new IdentityHashMap();
      Integer[] temp = new Integer[numbers.length];
      for (int i = 0; i < temp.length; i++) {
      temp[i] = new Integer(numbers[i]);
      hashNum.put(temp[i], i);
      }
      Arrays.sort(numbers);
      Arrays.sort(temp);
      int i = 0, j = numbers.length - 1;
      int[] result = new int[2];
      while (i != numbers.length) {
      if (numbers[i] + numbers[j] == target) {

              result[0] = (Integer) hashNum.get(temp[i]) + 1;
              result[1] = (Integer) hashNum.get(temp[j]) + 1;
              break;
          }
      
          else if (numbers[i] + numbers[j] > target) {
              j--;
          } else if (i < numbers.length - 1) {
              i++;
          }
      }
      Arrays.sort(result);
      return result;
      

      }
      }

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?