[英]Efficiently put sorted ArrayList in sorted data structure and find amount of numbers smaller than x, using Java
[英]Java - find all combinations of three numbers in sorted array that have a sum smaller than a number
標題很拗口,所以我將進一步解釋。 這是我的計算機科學課程入門練習測試中的一個問題。 大多數問題我都能自己解決或在網上找到解決方案,但不是針對這個問題。
您將獲得一個唯一整數(正數和負數)的排序數組 ( int[] arr
)。 您必須找出有多少三元組(數組中三個數字的組合)的總和小於給定數字( int num
)。
方法簽名為: public static int countTriplets (int [] arr, int num)
問題是它必須以盡可能低的時間復雜度來完成。 如果我理解正確,使用嵌套 for 循環遍歷所有可能的組合會給我 O(n^3) 的時間復雜度。 但是,我想不出任何其他解決方案。
我還應該提到,該數組應該用作數組,而不使用其他 Java 類,如 ArrayList。
任何幫助表示贊賞。 它不必是代碼中的完整解決方案,甚至只是關於如何解決這個問題的一般想法。
對於這個3-sum 較小的問題,您可以嘗試兩種方法:由於數組已經排序,您可以直接使用任何一種算法。
我會嘗試兩點方法。 看看 Leetcode 的 2-sum 和 3-sum 問題,因為這是它的一個變體。 祝你好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.