LeetCode 97周賽

1. 題目列表

2. 兩句話中的不常見單詞

hashmap按條件查詢單詞啊胶。

代碼:

class Solution {
    public String[] uncommonFromSentences(String A, String B) {
        List<String> res = new ArrayList<String>();
        HashMap<String, Integer> map1 = new HashMap<String, Integer>();
        HashMap<String, Integer> map2 = new HashMap<String, Integer>();
        String[] s1 = A.split(" ");
        String[] s2 = B.split(" ");
        for (String s : s1){
            // System.out.println(s);
            if (map1.get(s) == null){
                map1.put(s, 1);
            }else{
                map1.put(s, map1.get(s) + 1);
            }
        }
        for (String s : s2){
            if (map2.get(s) == null){
                map2.put(s, 1);
            }else{
                map2.put(s, map2.get(s) + 1);
            }
        }
        for (String s : s1){
            if (map1.get(s) == 1 && map2.get(s) == null)
                res.add(s);
        }
        for (String s : s2){
            if (map2.get(s) == 1 && map1.get(s) == null)
                res.add(s);
        }
        return res.toArray(new String[res.size()]);
    }
}

3. 螺旋矩陣 III

定義移動的步長S,當(dāng)前的方向direct睬涧,分情況討論當(dāng)前的方向蝌诡。 步長的移動規(guī)律是每次移動兩次相同的步長S后,S++看疙。

代碼:

class Solution {
public:
    
    vector<vector<int>> spiralMatrixIII(int R, int C, int r0, int c0) {
        int r = r0, c = c0, direct = 1, step = 1, prestep = 0;
        int cnt = 1;
        vector< vector<int> > res;
        vector<int> init(2);
        init[0] = r0, init[1] = c0;
        res.push_back(init);
        while (cnt < R * C){
            vector<int> coor(2);
            if (direct == 1){
                // 遍歷的每一個步都需要判斷是否是答案路徑
                for (int i = 1; i <= step; i++){
                    c++;
                    if (judge(r, c, R, C)){
                        coor[0] = r, coor[1] = c;
                        res.push_back(coor);
                        cnt++;
                    }
                }
                direct = 2;
            }else if (direct == 2){
                for (int i = 1; i <= step; i++){
                    r++;
                    if (judge(r, c, R, C)){
                        coor[0] = r, coor[1] = c;
                        res.push_back(coor);
                        cnt++;
                    }
                }
                direct = 3;
            }else if (direct == 3){
                for (int i = 1; i <= step; i++){
                    c--;
                    if (judge(r, c, R, C)){
                        coor[0] = r, coor[1] = c;
                        res.push_back(coor);
                        cnt++;
                    }
                }
                direct = 0;
            }else if (direct == 0){
                for (int i = 1; i <= step; i++){
                    r--;
                    if (judge(r, c, R, C)){
                        coor[0] = r, coor[1] = c;
                        res.push_back(coor);
                        cnt++;
                    }
                }
                direct = 1;
            }
            if (prestep == step){
                step++;
            }else{
                prestep = step;
            }
        }
        return res;
    }
    
    bool judge(int r, int c, int R, int C){
        if (r < 0 || r >= R || c < 0 || c >= C)
            return false;
        else return true;
    }
};

4. 可能的二分法

BFS染色法判斷是否是二分圖豆拨,如果存在相鄰的結(jié)點顏色相同,則返回false能庆,否則返回true施禾。

代碼:

class Solution {
public:
    /*
        BFS染色法判斷是否是二分圖,如果存在相鄰的結(jié)點顏色相同搁胆,則返回false弥搞,否則返回true
    */
    bool visited[2010];
    int g[2010][2010], color[2010];
    bool possibleBipartition(int N, vector<vector<int>>& dislikes) {
        memset(visited, false, sizeof(visited));
        memset(color, 0, sizeof(color));
        fill(g[0], g[0] + 2010 * 2010, 0x7fffffff);
        for (int i = 0; i < dislikes.size(); i++){
            g[dislikes[i][0]][dislikes[i][1]] = g[dislikes[i][1]][dislikes[i][0]] = 1;
        }
        bool flag = true;
        for (int i = 1; i <= N; i++){
            if (!visited[i] && !BFS(i, 1, N)){
                flag = false;
                break;
            }
        }
        return flag;
    }
    
    bool BFS(int s, int c, int n){
        queue< pair<int, int> > q;
        q.push(make_pair(s, c));
        visited[s] = true;
        while (!q.empty()){
            pair<int, int > u = q.front();
            q.pop();
            color[u.first] = u.second;
            for (int i = 1; i <= n; i++){
                // 如果存在鄰接點染色相同
                if (g[u.first][i] == 0x7fffffff) continue;
                if (color[i] == u.second) return false;
                if (!visited[i]){
                    q.push(make_pair(i, -u.second)); // 染成相反的顏色
                    visited[i] = true;
                }
            }
        }
        return true;
    }
    
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市渠旁,隨后出現(xiàn)的幾起案子攀例,更是在濱河造成了極大的恐慌,老刑警劉巖顾腊,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粤铭,死亡現(xiàn)場離奇詭異,居然都是意外死亡杂靶,警方通過查閱死者的電腦和手機梆惯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吗垮,“玉大人垛吗,你說我怎么就攤上這事∷傅牵” “怎么了职烧?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我蚀之,道長蝗敢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任足删,我火速辦了婚禮寿谴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘失受。我一直安慰自己讶泰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布拂到。 她就那樣靜靜地躺著痪署,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兄旬。 梳的紋絲不亂的頭發(fā)上狼犯,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音领铐,去河邊找鬼悯森。 笑死,一個胖子當(dāng)著我的面吹牛绪撵,可吹牛的內(nèi)容都是我干的瓢姻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼音诈,長吁一口氣:“原來是場噩夢啊……” “哼幻碱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起细溅,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤褥傍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谒兄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摔桦,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年承疲,在試婚紗的時候發(fā)現(xiàn)自己被綠了邻耕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡燕鸽,死狀恐怖兄世,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啊研,我是刑警寧澤御滩,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布鸥拧,位于F島的核電站,受9級特大地震影響削解,放射性物質(zhì)發(fā)生泄漏富弦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一氛驮、第九天 我趴在偏房一處隱蔽的房頂上張望腕柜。 院中可真熱鬧,春花似錦矫废、人聲如沸盏缤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唉铜。三九已至,卻和暖如春律杠,著一層夾襖步出監(jiān)牢的瞬間潭流,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工俩功, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幻枉,地道東北人碰声。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓诡蜓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胰挑。 傳聞我的和親對象是個殘疾皇子蔓罚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 動態(tài)規(guī)劃 111. 爬樓梯思路類似斐波那契數(shù)列注意考慮第 0 階的特殊情況 272. 爬樓梯 II思路類似上題,只...
    6默默Welsh閱讀 2,429評論 0 1
  • 簡述 極客時間算法40講中所出現(xiàn)的leetcode算法題 題目 【鏈表】reverse-linked-list(反...
    BestbpF閱讀 4,475評論 0 4
  • 一、動態(tài)規(guī)劃 找到兩點間的最短路徑贡这,找最匹配一組點的線茬末,等等,都可能會用動態(tài)規(guī)劃來解決盖矫。 參考如何理解動態(tài)規(guī)劃中丽惭,...
    小碧小琳閱讀 24,867評論 2 20
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,404評論 0 17
  • 908. 最小差值 I 題目難度Easy 給定一個整數(shù)數(shù)組 A辈双,對于每個整數(shù) A[i]责掏,我們可以選擇任意 x 滿足...
    獨孤岳閱讀 806評論 0 0