2018-06-20

Q1: leetcode 771
Q2: In the "100 game," two players take turns adding, to a running total, any integer from 1..10. The player who first causes the running total to reach or exceed 100 wins.
Q3: partition
Q4: find kth
Q5: rainbow sort
Q6 : move 1 to the end
Q7: selection sort
Q8: a to the pow of b
Q9: first occurence using binary search
Q10: search in shifted array

'''
//Q
public class Solution {
public int search(int[] array, int target) {
// Write your solution here
if (array == null || array.length == 0) {
return -1;
}
int i = 0;
int j = array.length - 1;
while (i <= j) {
int m = i + (j - i) / 2;
if (array[m] == target) {
return m;
}
if (array[m] < array[j]) {
if (array[m] <= target && array[j] >= target) i = m + 1;
else j = m - 1;
} else {
if (array[m] >= target && array[i] <= target) j = m - 1;
else i = m + 1;
}
}
return -1;
}
}
//
public class Solution {
public int firstOccur(int[] array, int target) {
// Write your solution here
if (array == null || array.length == 0) {//== =
return -1;
}
int i = 0;
int j = array.length - 1;

while (i < j){
    int m = (j - i) / 2 + i;
  if (array[m] == target) {
    j = m;
  } else if (array[m] > target) {
    j = m - 1;
  } else {
    i = m + 1;
  }
}
if (j >= 0 && array[j] == target) {
    return  j;
}
return -1;

}
}
//
Q:
public class Solution {
public long power(int a, int b) {
// Write your solution here
return helper(a, b);
}

private long helper(int a, int b) {
//TODO: basecase
if (a == 1 || b == 0) { //
return 1;
}
if (a == -1) {
return (b & 1) == 1 ? -1 : 1;
}
if (b == 1) {
return a;
}
int m = b / 2;
return helper(a, m) * helper(a, b - m);
}
}
//
Q:leetcode 771
class Solution {
public int numJewelsInStones(String J, String S) {
Set<Character> set = new HashSet<>();
for (int i = 0; i < J.length(); i++) {
set.add(J.charAt(i));
}
int result = 0;
for (int i = 0; i < S.length(); i++) {
if (set.contains(S.charAt(i))){
result++;
}
}
return result;
}
}

// public boolean firstCanWin(int n){
return curCanWin(n);
}

private boolean curCanWin(int remaining) {
if (remaining <= 0) {
return true;//pre player can win
}
for (int i = 1; i < 10; i++) {
if (!curCanWin((remaining - i))) {
return true;
}
}
return false;
}

//Q
public boolean firstCanWin(int n){
return curCanWin(n);
}

private boolean curCanWin(int remaining) {
if (remaining <= 0) {
return true;//pre player can win
}
for (int i = 1; i < 10; i++) {
if (!curCanWin((remaining - i))) {
return true;
}
}
return false;
}

// private int partition(int[] a, int left, int right) {
// int pivotIdx = left + (int)(Math.random() * (right - left + 1));
int pivotIdx = right;
int pivot = a[pivotIdx];
swap(a, pivotIdx, right);
int i = left;
int j = right - 1;
while (i <= j) {
if (a[i] < pivot) {
i++;
} else if (a[i] >= pivot) {
j--;
} else {
swap(a, i++, j--);
}
}
swap(a, i, j);
return i;
}

private int findKth(int[] nums, int left, int right, int k) {
    int m = k + left;
    int privateIdx = partition(nums, left, right);
    if (privateIdx == m) {
        return privateIdx;
    } else if (privateIdx > m) {
        return findKth(nums, left,privateIdx - 1,k);
    } else {
        return findKth(nums, privateIdx + 1, right,k - (privateIdx - left + 1));
    }
}

//
public void sort3Ways(int[] a, int target) {
int n = a.length;
int i = 0;
int j = 0;
int k = n - 1;

    while (j < k) {
        if (a[j] < target) {
            swap(a, i++, j++);
        } else if (a[j] == target) {
            j++;
        } else {
            swap(a, j, k--);
        }
    }
    return;
}

//Q
//slow 是-1 or 0 的init與slow pointer的物理意義是否是included 十分相關(guān)
public void moveZeroes(int[] nums) {
if (nums == null || nums.length == 0) {
return;
}
int n = nums.length;
int slow = 0;
int fast = 0;
while (fast < n) {
if (nums[fast] != 0) {
swap(nums, fast++, slow++);
} else {
fast++;
}
}
return;
}

//Q
public class Solution {
public int[] solve(int[] array) {
// Write your solution here
if (array == null || array.length == 0) {
return array;
}
int n = array.length;

for (int i = 0; i < n; i++) {
  int tmp = -1;
  int tmpVal = array[i];
  for (int j = i + 1; j < n; j++) {
    if (array[j] < tmpVal) {
      tmpVal = array[j];
      tmp = j;
    }
  }
  if (i != -1) {
    swap(array, tmp, i);
  }
}
return array;

}
'''

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贷币,一起剝皮案震驚了整個濱河市美旧,隨后出現(xiàn)的幾起案子迫卢,更是在濱河造成了極大的恐慌醉锅,老刑警劉巖宫仗,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兑燥,居然都是意外死亡鱼炒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門欲芹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卿啡,“玉大人,你說我怎么就攤上這事菱父【蹦龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵浙宜,是天一觀的道長官辽。 經(jīng)常有香客問我,道長粟瞬,這世上最難降的妖魔是什么同仆? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮裙品,結(jié)果婚禮上俗批,老公的妹妹穿的比我還像新娘。我一直安慰自己市怎,他們只是感情好岁忘,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著区匠,像睡著了一般干像。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驰弄,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天麻汰,我揣著相機(jī)與錄音,去河邊找鬼戚篙。 笑死五鲫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的已球。 我是一名探鬼主播臣镣,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼智亮!你這毒婦竟也來了忆某?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤阔蛉,失蹤者是張志新(化名)和其女友劉穎弃舒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聋呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年苗踪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片削锰。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡通铲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出器贩,到底是詐尸還是另有隱情颅夺,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布蛹稍,位于F島的核電站吧黄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唆姐。R本人自食惡果不足惜拗慨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奉芦。 院中可真熱鬧赵抢,春花似錦、人聲如沸仗阅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽减噪。三九已至,卻和暖如春车吹,著一層夾襖步出監(jiān)牢的瞬間筹裕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工窄驹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朝卒,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓乐埠,卻偏偏與公主長得像抗斤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丈咐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,352評論 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,034評論 0 2
  • 今日推薦文章:《深入理解JavaScript系列:作用域鏈(Scope Chain)》 原文作者:湯姆大叔瑞眼, 來源...
    饑人谷_若愚閱讀 882評論 0 4
  • 這不是神話故事,是紀(jì)實棵逊。妖也不是怪伤疙,是一些奇怪的人和事。 今天一個投資群里又有人炸鍋,說這拿了錢的老板又作怪徒像,現(xiàn)在...
    盧訓(xùn)閱讀 583評論 4 3
  • 有很長一段時間黍特,我的微博QQ昵稱叫做“嫌疑人X”。 這部作品源自東野圭吾的一部作品《嫌疑人X的獻(xiàn)身》锯蛀。故事講了一個...
    南默mo閱讀 349評論 2 0