3 ARTS打卡第三周(2019-08-19)

Algorithm

本周LeetCode 題目:350. 兩個數組的交集 II
題解思路:首先,將兩個數組進行排序。比較兩個數組的長度,將長度較小的那個放在外層循環,長度較長的放在內層循環,這樣的做法是可以減少檢索的次數,當數組長度相差極大的時候,這種方式的優點就可以凸顯。隨后,進行遍歷獲取交集,假設剛開始的前n次遍歷沒有找到相等的數字,則下次遍歷還會從0索引開始。如果在前n次遍歷中,在第n次遍歷,找到相等項,處理之后結束內層循環,則第n+1次會在第n次的索引i+1 處的地方繼續進行遍歷,這樣得益于排序之后的好處。
題解代碼:

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        List<Integer> result = new ArrayList<>();
        int start = 0;
        if(nums1.length <= nums2.length) {
            for (int i = 0; i < nums1.length; i++) {
                int find = nums1[i];
                for (int j = start; j < nums2.length; j++) {
                    if (find == nums2[j]) {
                        result.add(Integer.valueOf(find));
                        start = j + 1;
                        break;
                    }

                }
            }
        } else {
            for (int i = 0; i < nums2.length; i++) {
                int find = nums2[i];
                for (int j = start; j < nums1.length; j++) {
                    if (find == nums1[j]) {
                        result.add(Integer.valueOf(find));
                        start = j + 1;
                        break;
                    }
                }
            }
        }

        int[] nums3 = new int[result.size()];
        for (int i = 0; i < result.size(); i++) {
            nums3[i] = result.get(i);
        }
        return nums3;
    }
    
}

Review

本周文章:Why you should totally switch to Kotlin
個人見解;我自己的主語言是Java,這篇文章表達了許多有關于Kotlin這門編程語言的好處,的確有挺多解決Java語言之前的痛點的(個人基于JDK 8來闡述),比如兩個對象的數據都相等的話,我們在現實生活中就會認為這兩個對象是相等的,而在Java的語法中,在默認的equals方法,因為這兩個對象所存放的內存地址是不同的,所以就會返回false,所以會讓Java程序員重寫了equals方法,但是在Kotlin中提供了==和===比較符,==只要數據相同就會返回true,而===的結果同默認的equals方法。這樣省去了重復性的編碼,但是Kotlin雖然是簡化Java的代碼風格,但是個人感覺語法風格上還是有些別扭,給我的感覺是基于Java和Python中間,Python的語法是真的讓我感覺很簡潔明了。

Tip

本周Tip:在Java中,方法的調用永遠是值調用,而不像C++,Python有引用調用及值調用(基于JDK 8)

Share

最近迷上了一部美劇叫Stranger Things,中文譯名:怪奇物語,非常好看。可以用來學習英語。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容