给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 <a, b, c> 个数。-笔试面试资料

这是qklbishe.com第13021 篇笔试面试资料
提供答案分析,通过本文《给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 <a, b, c> 个数。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 <a, b, c> 个数。

给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 &lt;a, b, c&gt; 个数。 闪电利剑
import java.util.*;  public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      * @param arr int整型一维数组       * @return int整型      */     public int NumberOfTriplets (int[] arr) {         int len = arr.length;         if (len < 3) {             return 0;         }          Set<Integer> set = new HashSet<>();         for (int num : arr) {             set.add(num);         }         int ans = 0;         for (int i = 0; i < len - 1; i++) {             for (int j = i + 1; j < len; j++) {                 int sum = arr[i] + arr[j];                 if (sum != arr[i] && sum != arr[j] && set.contains(sum)) {                     ans++;                 }             }         }         return ans;     } }

2021-07-11 18:19:06 回复(0)
给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 &lt;a, b, c&gt; 个数。 时间不多了
import java.util.*;   public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param arr int整型一维数组       * @return int整型      */     public int NumberOfTriplets (int[] arr) {         // write code here         int res = 0;         int len = arr.length;         if(len < 3){             return 0;         }         Arrays.sort(arr);         /**          先对数组进行排序;         倒序遍历数组,将数组的每个元素视为target;         用双指针的方法,寻找数组中 a+b = target 的组合数量;         a、b、target是不重复的三个数;                 如:对于已经排序好的数组  [-3,-2,-1,0,1,2,3]                 3+0=3  这种情况是不行的;         */                  for(int i=len-1;i>=0;i--){             int temp = check(arr,0,len-1,i,arr[i]);             res += temp;         }         return res;     }          int check(int[] arr ,int left,int right,int i,int target){         int ans = 0;         while(left < right){             if(left == i){                 left++;                 continue;             }                          if(right == i){                 right--;                 continue;             }             int sum = arr[left] + arr[right];             if(sum == target){                 ans++;                 left++;                 right--;             }else if(sum < target){                 left++;             }else{                 right--;             }         }         return ans;     } }

2021-07-07 09:38:54 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个不存在重复元素的数组,输出其中所有满足a + b = c 的三元组 <a, b, c> 个数。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情