Leetcode-Java(三十)

299. Bulls and Cows

一開始我用的是HashSet保存兩個(gè)字符串中出現(xiàn)過的數(shù)字但是沒有匹配上的秩仆,但是出現(xiàn)了下面的情況,所以用的是HashMap:

class Solution {
    public String getHint(String secret, String guess) {
        int bulls = 0;
        int cows = 0;
        char[] chars1 = secret.toCharArray();
        char[] chars2 = guess.toCharArray();
        Map<Character,Integer> map1 = new HashMap<Character,Integer>();
        Map<Character,Integer> map2 = new HashMap<Character,Integer>();
        for(int i = 0;i<chars1.length;i++){
            if(chars1[i] == chars2[I]){
                bulls++;
            }
            else{
                if(map1.containsKey(chars1[I]))
                    map1.put(chars1[i],map1.get(chars1[i])+1);
                else
                    map1.put(chars1[i],1);
                if(map2.containsKey(chars2[I]))
                    map2.put(chars2[i],map2.get(chars2[i])+1);
                else
                    map2.put(chars2[i],1);
            }
        }
        for(char chr:map1.keySet())
            if(map2.containsKey(chr)){
                cows += Math.min(map1.get(chr),map2.get(chr));
            }
                
        return bulls +"A" + cows + "B";
    }
}

300. Longest Increasing Subsequence

image.png

動(dòng)態(tài)規(guī)劃
運(yùn)用動(dòng)態(tài)規(guī)劃法祟偷,當(dāng)循環(huán)到當(dāng)前元素i時(shí),判斷此元素與前面的元素m的大小關(guān)系撬统,如果比前面的元素大两曼,那么該位置的LIS長度為max(dp[i],dp[j]+1)。
同時(shí)還需要一個(gè)元素保存當(dāng)前最大的LIS斧散。

class Solution {
    public int lengthOfLIS(int[] nums) {
        if(nums==null || nums.length==0)
            return 0;
        int[] dp = new int[nums.length];
        dp[0] = 1;
        int res = 1;
        for(int i =1;i<nums.length;i++){
            int temp = 1;
            for(int j=0;j<i;j++){
                if(nums[i] > nums[j]){
                    temp = Math.max(dp[j]+1,temp);
                }                    
            }
            dp[i] = temp;
            res = Math.max(res,dp[i]);
        }
        return res;
    }
}

動(dòng)態(tài)規(guī)劃結(jié)合二分查找
思路是先建立一個(gè)空的dp數(shù)組岳颇,然后開始遍歷原數(shù)組,對(duì)于每一個(gè)遍歷到的數(shù)字颅湘,我們用二分查找法在dp數(shù)組找第一個(gè)不小于它的數(shù)字,如果這個(gè)數(shù)字不存在栗精,那么直接在dp數(shù)組后面加上遍歷到的數(shù)字闯参,如果存在,則將這個(gè)數(shù)字更新為當(dāng)前遍歷到的數(shù)字悲立,最后返回dp數(shù)字的長度即可鹿寨,注意的是,跟上面的方法一樣薪夕,特別注意的是dp數(shù)組的值可能不是一個(gè)真實(shí)的LIS(每個(gè)位置的LIS是從0到插入的index)脚草。參見代碼如下:

class Solution {
    public int lengthOfLIS(int[] nums) {
        int[] dp = new int[nums.length];
        int len = 0;
        for (int num : nums) {
            int i = Arrays.binarySearch(dp, 0, len, num);
            if (i < 0) {
                i = -(i + 1);
            }
            dp[i] = num;
            if (i == len) {
                len++;
            }
        }
        return len;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市原献,隨后出現(xiàn)的幾起案子馏慨,更是在濱河造成了極大的恐慌,老刑警劉巖姑隅,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件写隶,死亡現(xiàn)場離奇詭異,居然都是意外死亡讲仰,警方通過查閱死者的電腦和手機(jī)慕趴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冕房,你說我怎么就攤上這事躏啰。” “怎么了耙册?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵给僵,是天一觀的道長。 經(jīng)常有香客問我觅玻,道長想际,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任溪厘,我火速辦了婚禮胡本,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畸悬。我一直安慰自己侧甫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布蹋宦。 她就那樣靜靜地躺著披粟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冷冗。 梳的紋絲不亂的頭發(fā)上守屉,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音蒿辙,去河邊找鬼拇泛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛思灌,可吹牛的內(nèi)容都是我干的俺叭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼泰偿,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼熄守!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耗跛,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤裕照,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后调塌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牍氛,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年烟阐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搬俊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紊扬。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唉擂,靈堂內(nèi)的尸體忽然破棺而出餐屎,到底是詐尸還是另有隱情,我是刑警寧澤玩祟,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布腹缩,位于F島的核電站,受9級(jí)特大地震影響空扎,放射性物質(zhì)發(fā)生泄漏藏鹊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一转锈、第九天 我趴在偏房一處隱蔽的房頂上張望盘寡。 院中可真熱鬧,春花似錦撮慨、人聲如沸竿痰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽影涉。三九已至,卻和暖如春规伐,著一層夾襖步出監(jiān)牢的瞬間蟹倾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工猖闪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喊式,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓萧朝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親夏哭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子检柬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • 本文內(nèi)容為練習(xí)LeetCode題目時(shí)的解題思路和不同算法的記錄,實(shí)現(xiàn)語言為C++竖配,代碼保存在Github何址,均已在L...
    SK木眠閱讀 1,006評(píng)論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,747評(píng)論 0 33
  • 動(dòng)態(tài)規(guī)劃(Dynamic Programming) 本文包括: 動(dòng)態(tài)規(guī)劃定義 狀態(tài)轉(zhuǎn)移方程 動(dòng)態(tài)規(guī)劃算法步驟 最長...
    廖少少閱讀 3,291評(píng)論 0 18
  • 0. 動(dòng)態(tài)規(guī)劃分析 0.1 動(dòng)態(tài)規(guī)劃进胯、遞歸和貪心算法的區(qū)別 動(dòng)態(tài)規(guī)劃就是利用分治思想和解決冗余的辦法來處理問題用爪,所...
    dreamsfuture閱讀 7,429評(píng)論 2 6
  • 一汪溫潤的翡翠,惹春風(fēng)沉醉 將一襲柔情化雨胁镐,催熟蒜薹 也催促父親的心事偎血,穿梭于蒜地 一遍遍澆水诸衔、施肥、除草或 理順...
    穗心說語閱讀 319評(píng)論 2 3