題目描述
實現函式 atoi 。函式的功能為將字串轉化為整數
解題思路
1. 字元和int可以互轉 『9』 - 『0』 = 9
2. int的臨界值
「回文」是指正讀反讀都能讀通的句子。"回文數"是一種數字。如:98789public class test6
for (int i = index; i < ss.length; i++)
result = sign * s + result * 10;
if (result > integer.max_value)
return integer.max_value;
if (result < integer.min_value)
return integer.min_value;
}return (int) result;
}}
題目描述
在不使用額外的記憶體空間的條件下判斷乙個整數是否是回文數字
解題思路
使用 % 取低位,使用 / 取 最高位
數值去著去尾
x = x % div / 10;
div /= 100;
題目描述public class test9
if (x < 10)
int div = 1;
int len = 0;
while (x / div >= 10)
for (int i = 0; i < len / 2 + 1; i++)
x = x % div / 10;
div /= 100;
}return true;
}}
給出乙個有n個元素的陣列s,s中是否有元素a,b,c滿足a+b+c=0?找出陣列s中所有滿足條件的三元組。
注意:三元組(a、b、c)中的元素必須按非降序排列。(即a≤b≤c)
解集中不能包含重複的三元組。
解題思路
對陣列進行排序
選擇a為推進點
為什麼選擇a為推薦點呢?不用b呢?
假設有一陣列 a0,a1,a2,b1,b2,b3,c1,c2,c3
當a=a0時 n(b+c) = f1(a1,a2,b1,b2,b3,c1,c2,c3)
當a=a1時 n(b+c) = f2(a2,b1,b2,b3,c1,c2,c3)
f1集合包含f2集合
當b=b1,n(a+c) = f1( a0,a1,a2) + f1(b2,b3,c1,c2,c3)
當b=b2,n(a+c) = f2( a0,a1,a2,b1) + f1(b3,c1,c2,c3)
f1集合交集f2集合
因此選擇a為推進點更明確
題目描述public class test14
int left = i + 1;
int right = len - 1;
while (left < right ) else if (result > 0) else }}
}return res;
}}
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
解題思路
位運算中異或的性質:兩個相同數字異或=0,乙個數和0異或還是它本身
1.當只有乙個數出現一次時,我們把陣列中所有的數,依次異或運算,最後剩下的就是落單的數,因為成對兒出現的都抵消了。2.依照這個思路,我們來看兩個數(我們假設是ab)出現一次的陣列。我們首先還是先異或,剩下的數字肯定是a、b異或的結果,
3.這個結果的二進位制中的1,表現的是a和b的不同的位。我們就取第乙個1所在的位數,假設是第3位,接著把原陣列分成兩組,分組標準是第3位是否為1。
4.如此,相同的數肯定在乙個組,因為相同數字所有位都相同,而不同的數,肯定不在一組。然後把這兩個組按照最開始的思路,依次異或,剩餘的兩個結果就是這兩個只出現一次的數字。
public class test5
int bitresult = 0;
for(int i = 0; i < length; ++i)
int index = findfirst1(bitresult);
for(int i = 0; i < length; ++i)else}}
private int findfirst1(int bitresult)
return index;
}private boolean isbit1(int target, int index)
}
常規排序演算法總結
首先推薦乙個學習資料結構的優秀的視覺化 主要總結以下6種排序演算法,其中插入排序 選擇排序 歸併排序 快速排序。1.氣泡排序 bubble sort 和快速排序 quick sort 和隨機快速排序 random quick sort 博文待寫 2.插入排序 insertion sort 和希爾排序...
各種常規排序演算法總結
基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子表中的適當位置,直到全部記錄插入完成為止。常規插入排序分兩種,即直接插入排序和希爾排序。假設待排序的記錄放在陣列r 0.n 1 中,排序過程的某一中間時刻,r被劃分成兩個子區間r 0.i 1 和r i.n 1 其中 前乙個區間...
分類演算法的常規流程?
分類演算法有很多,邏輯回歸 svm等,總結其操作,無非是在幹下面幾件事 一 找到要用於分類的模型 記錄筆記 模型函式公式 函式可調引數 w,b,之類的 二 找到優化模型的方法 學習內容 各種優化方法 求最大 最小什麼的來達到最優解 記錄筆記 針對各個函式可調引數要採用的迭代更新公式 三 敲 1 要自...