星空网 > 软件开发 > Java

LeetCode第一题以及时间复杂度的计算

问题描述:给定一组指定整数数组,找出数组中加和等于特定数的两个数。

     函数(方法)twoSum返回这两个数的索引,index1必须小于index2。

     另外:你可以假设一个数组只有一组解。

     一个栗子:

        Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2

 

算法实现如下:

 1 /** 2    * 时间复杂度O(n) 3    * @param array 4    * @param target 5    * @return Map<Integer,Integer> 6   */ 7   public static Map<Integer, Integer> twoSum(int[] array, int target) { 8      9     //Map<value,index>10     Map<Integer, Integer> result = new HashMap<Integer, Integer>();11     12     Map<Integer, Integer> container = new HashMap<Integer, Integer>();13     for (int i = 0; i < array.length; i++) {14       if (!container.containsKey(target - array[i])) {15         container.put(array[i], i + 1);16       } else {17         result.put(target - array[i], container.get(target - array[i]));18         result.put(array[i], i + 1);19         break ;20       }21     }22 23     return result;24   }

另有双层循环判断的算法实现,时间复杂度为O(n²),在此就不列出。

 

关于时间复杂度的计算

  一个栗子:
  

1 int value = 0 ;              //该代码执行1次2 for(int i = 0 ; i < n ; i++){  3   value += n ;              //该代码执行n次4 }

  该算法执行1+n次,如果n趋近于无穷大,1便可忽略不计,也就是说该算法执行了n次。时间复杂度常用O符号表示,这个算法的时间复杂度为O(n)。

 

  当一个算法的计算时间复杂度时,可以遵循这样的规则:
    1).去掉运行时间中的所有加法常数。
    2).只保留最高阶项。
    3).如果最高阶项存在且不是1,去掉与这个最高阶相乘的常数得到时间复杂度

  再一个栗子
  

1 for (int i = 0; i < n; i++) {2   for (int j = i; j < n; j++) {3     // do something4   }5 }  

 


  当 i = 0 时 里面的fo循环执行了n次,当i等待1时里面的for循环执行了n - 1次,当i 等于2里里面的fro执行了n - 2次........所以执行的次数是:
  n + (n-1) + (n-2) + ...+ 1
  = n(n+1)/2
  = n²/2 + n/2


  根据我们上边的时间复杂度算法
    1.去掉运行时间中的所有加法常数: 没有加法常数不用考虑
    2.只保留最高阶项: 只保留 n²/2
    3. 去掉与这个最高阶相乘的常数: 去掉 1/2 只剩下 n²
  最终这个算法的时间复杂度为O(n²)


 




原标题:LeetCode第一题以及时间复杂度的计算

关键词:时间

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

进口关税税率:https://www.goluckyvip.com/tag/13609.html
前所未有:https://www.goluckyvip.com/tag/1361.html
关税税率查询:https://www.goluckyvip.com/tag/13610.html
特朗普小熊:https://www.goluckyvip.com/tag/13611.html
海关攻略:https://www.goluckyvip.com/tag/13612.html
外贸清关:https://www.goluckyvip.com/tag/13613.html
去日本入住酒店,东西随意用却有一个特殊“要:https://www.vstour.cn/a/411241.html
中国有哪些著名的酒店品牌。:https://www.vstour.cn/a/411242.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流