摘要:詳見這道題的筆記是單精度,小數點后位雙精度,小數點后位。中默認浮點數類型為,所以如果直接寫成會報錯,應該寫成或者同理是和默認定點數類型是所以定義的時候也需要加上表示類。
charArray toString
char[] 直接toString 得到的會是一個像這樣的[C@6a2437ef序列,所以還是用這個方法:String.valueOf。這讓我想到之前有道題(Anagram),我先將string變成char[],排序,然后放在hash表中,最后發現比較的時候明明兩個相同的char[]就是不能相等,才發現這個問題。用String.valueOf解決,當初還想過序列化。(詳見這道題的筆記)
float vs double, int vs long
float是單精度,4 bytes, 小數點后6-7位;double雙精度, 8 bytes, 小數點后15位。Java中默認浮點數類型為double,所以如果直接寫成 float af = 0.3444 會報錯,應該寫成 float af = 0.344f, 或者float af = (float)0.344.同理是int 和 Long,默認定點數類型是int所以定義的時候也需要加上32L表示Long類。
轉換
xxx.[Target]Value 這個方法用來轉換類型很常用,比如float to int, af.intValue(). 但是使用int時要注意,這是一個類的方法,定義成int i是沒辦法是用的,必須變成Integer i (Integer 與 int 的區別)。
強制轉換與精度 低精度向高精度可以直接強制轉換,反之則會面臨精度丟失的問題,一般用BigDeceimal解決。
HashMap的遍歷
boolean[] bool數組默認都是false.有時候hashset, hashmap空間太大可以考慮試試bool數組
Arrays.binarySearch是二分法查找,但它的返回值是(-(插入點) - 1), 這個在有一道Google的題里面很巧妙地用到了。binarySearch didn"t find
關于原碼補碼反碼有一篇很棒的文章:true code, complementary code, ones-complementary code
Iterator
舉個栗子,iterator用于遍歷Collection. Collection中主要有set, queue, list。本來可以直接for遍歷,但是這樣耦合度太高,為了表現“能夠訪問collection又不暴露其具體的細節”,而產生了用一個iterator來遍歷的想法。Collection繼承了Iterable接口,從而可以通過構建一個Iterator = list.iterator(), 繼而通過對這個新建的iterator訪問來遍歷list. Iterator有三個方法: hasNext(), next(), remove(). 一般這樣用while(next()) {next()...}, remove()刪除當前next()得到的元素。Iterator用在Flatten類型的題目中:一般要考慮cursor來指定當前位置,或者是兩個queue/stack來存放當前位置
Collection里面的細分類
先貼一個很好的介紹Collection大家族。可以簡單來說,Array存儲的是基本類型(primitive)并且大小固定,Collection存儲任意類型并且可以自動擴容。Collection是個大家族,里面包括List, Queue, Set, Deque... 而以Queue為例,它僅僅是一個接口,可以用LinkedList或者PriorityQueue來實現。具體關系看下面這張大圖:
StringBuilder
歸納一下StringBuilder的常見方法:1)構造:一般是空著構造或者可以直接賦值(char, boolean, string...) 2)append(object) 3) delete(start, end) deleteCharAt 4) indexOf 5) insert 6) reverse 7) toString (* 有時候連用很好用,比如reverse().toString())
HashMap的空間優化
代表題目(Leetcode 387), 有時候可以考慮用一個很大的整形數組來優化hashmap的空間問題(256)。將hashmap的key值(如果可以int化)存為int[key] = value的形式,甚至可以更優化為bit型
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67229.html
SF排版真心太迷醉了... java中沒有while(1)那個是C里面的啊,java是while(true),并且之后也不用再寫什么了,while(true)之后默認的都是unreachable Math.sqrt(double x)Math很多方法,尤其是涉及小數的,都是輸入輸出都是double類型,比如sqrt,三角函數等等 ++i和i++int x = i++ 這種偷懶賦值很容易錯啊! i...
1. CharacterisDigit(), isAlphabetic(), isLetter() [Alphabet > letter]toLowerCase()2.各種長度String length()List類:size()array: length3.Arrayssort()4.Math系列容易混淆(double) pow(double m, double n) m的n次方(double)...
摘要:此專欄文章是對力扣上算法題目各種方法的總結和歸納整理出最重要的思路和知識重點并以思維導圖形式呈現當然也會加上我對導圖的詳解目的是為了更方便快捷的記憶和回憶算法重點不用每次都重復看題解畢竟算法不是做了一遍就能完全記住的所 ...
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領域從理論知識到動手實踐的內容 按照下面給出的最完備學習路線分類 難度系數分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
此專欄文章是對力扣上算法題目各種方法的總結和歸納, 整理出最重要的思路和知識重點并以思維導圖形式呈現, 當然也會加上我對導圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(不用每次都重復看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經知道解題思路和方法, 想進一步加強理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據題號先去力扣看看官方題解, 然后再看本文內容). 關...
閱讀 3725·2021-09-22 10:57
閱讀 1914·2019-08-30 15:55
閱讀 2699·2019-08-30 15:44
閱讀 1731·2019-08-30 15:44
閱讀 1876·2019-08-30 15:44
閱讀 2244·2019-08-30 12:49
閱讀 1053·2019-08-29 18:47
閱讀 3135·2019-08-29 16:15