這幾天的簡單記錄其實大部分還是在我**裡面,這是只是一些簡單的記錄
位運算《和》和》(補0)
對於int ,有1<<35(取模後變3)與1<<3相同,long就是按64取模
位運算可以實現沒有第三個值的情況下,交換兩個數
a00110011
b10101111
b10011100
a10101111
原理 aba = b
a^a=000…
異或還可以看錯不進製加法
那個原理的妙用 可用來處理 1001個數字中包括1-1000,還有乙個是1-1000中的乙個數字,重複 求那個重複的是數字是多少
arr[1001] 輪流異或 再 異或一次1-100 輪流異或
abb(重複的)cdef ^ abcde^f == b
a是成對存在的,bbb是三個 bbb =b
巧妙地補成一對一對
這道題的另一種解法,如果可以開闢空間的話,那就考慮數字下標的妙用,開闢乙個1000的空間,1就表示重複陣列中1出現的個數,遍歷一次,如果遇到++
遍歷第二次就在那新開的1000個空間中找乙個2(其他都是1)
講n轉為二進位制
判斷二進位制1的個數
package com.offer;
public
class
numberof1
x = x<<1;
}return count;
}//公升級版本的解法
//把乙個是數字-1都是把原來那個數字的最右邊的1變成0
//基於上面這句話再讓 原來那個數字與他減去一之後的數字做與運算,得到的結果就是
//最左邊的1變0,其他數字不變
public
static
intnumberof12
(int n)
return count;
}public
static
void
main
(string[
] args)
}
解決遞迴問題的兩個要點:
1.發現邏輯的相關性!!
2.找出遞迴的出口
3.委託機制,踢皮球,自己幹一點,下面的交給別人去搞
發現相似性
1.摸索重複的規律,如果找不到
2.可以引數去構造相關性
沒困難-》自找可能,再解決
遞迴其實計算機是不知道的,只是它呼叫的方法剛好就是本身
基於一種儲存斷點的形式執行
(也可以說是壓棧 談棧)
package com.offer;
public
class
addall
;//int sum = addall(a,0);//從頭來
//int sum = addall2(a, a.length-1);//從尾巴來
int sum =
addall3
(a,0
,a.length-1)
;//從尾巴來
system.out.
println
(sum);}
/** * @description : 實現遞迴累加
* @param: [a]:要累加的陣列 begin:
* @return: int:累加值
* @author: wyf
* @date: 2020/1/12 11:26
*/private
static
intaddall
(int
a,int begin)
return a[begin]
+addall
(a,begin+1)
;}/** * @description:
* @param: [a, end] a是要累加的陣列,end是結束位置
* @return: int
* @author: wyf
* @date: 2020/1/12 12:36
*/private
static
intaddall2
(int
a,int end)
return a[end]
+addall2
(a,end-1)
;}/** * @description: 折半式累加
* @param: [a:累加的陣列, begin:起始位置, end:結束位置]
* @return: int
* @author: wyf
* @date: 2020/1/12 13:10
*/private
static
intaddall3
(int
a,int begin,
int end)
else
if(end-begin==1)
int mid =
(begin + end)/2
;return
addall3
(a,begin,mid-1)
+ a[mid]
+addall3
(a,mid+
1,end);}
}
做遞迴問題的步驟:
我們自己做一部分,剩下的交給別人去做
記錄幾個有用的函式,寫演算法可能用到
int index = new random().nextint(n);
[0,n)
產生隨機數
string str1 = 「a,b,c,d」;
string arr1 = str1.split(",");
system.out.println(arrays.tostring(arr1));
字串分割成陣列
int n = integer.tostring(n, 2)
2換16就是16進製制
進駐轉換
int i = integer.
parseint
(s1)
;
string轉數字 深度學習簡單筆記
各方法在訓練中對應的作用簡單解釋 微積分 求導 梯度下降法 求最優解 最小二乘法 尋找資料的最佳函式匹配 樸素葉貝斯 回歸 分類 極大似然估計 將概率最大化的引數作為真實估計值使用。似然函式 對數似然 取對數可以將連乘轉為連加且不影響單調性,但其實可能更重要的一點是概率的連乘將會變成乙個很小的值,可...
vuex學習簡單筆記
vuex狀態管理 具體介紹隨時查官網簡介 state 類似於在例項data中定義乙個變數 getter 有點像計算屬性computed.接受state作為第乙個引數 const store newvuex.store getters store.getters.donetodos mutation ...
C 語言深度剖析個人簡單筆記
1 定義宣告最重要的區別是 定義建立了物件並且為其分配了記憶體。宣告沒有分配記憶體。2 reigster 最快的關鍵字 請求編譯器盡可能的將變數存放在cpu的暫存器中,以提高效率,是盡可能 不是絕對。3 static 修飾變數 靜態全域性變數作用域僅限於變數被定義的檔案中,定義的開始出到檔案的結束 ...