leetcode 第205場周賽

2021-10-24 12:37:48 字數 2459 閱讀 8686

1576. 替換所有的問號

難度:打卡

考點:遍歷

時間複雜度:o(n)

class solution 

char chs = new char[110];

int n = s.length();

chs[0] = '0';

for(int i = 1; i <= n; ++i)

chs[n + 1] = '0';

for(int i = 1; i <= n; ++i)

chs[i] = cha[c];}}

string str = "";

for(int i = 1; i <= n; ++i)

return str;

}}

1577. 數的平方等於兩數乘積的方法數

難度:打卡

考點:雜湊表

時間複雜度:o(n^2)

//雜湊表加速即可

class solution

}for(int i = 0; i < nums1.length; ++i)

}for(int i = 0; i < nums1.length; ++i)

}for(int i = 0; i < nums2.length; ++i)

}return res;

}}

1578. 避免重複字母的最小刪除成本

難度:打卡

考點:雙指標,累加重複字元的權值減去最大權值

時間複雜度:o(n)

class solution 

if(j - i > 1)

i = j;

j++;

}return res;

}}

1579. 保證圖可完全遍歷

難度:中等

考點:並查集、dfs、(克魯斯卡爾最小生成樹的方式其實是並查集)(公共邊方法其實是dfs)

時間複雜度o(n + m)

演算法思想:先找到3的型別,將其插入到並查集,然後在根據這個並查集分別去新增1型別和2型別,重複的邊就計數,到最後所有節點都是在乙個節點下的(可以迴圈也可以先設定n,每次加入一條邊就減一表示並查集的節點個數加1),否則就是非連通圖,輸出結果即可。

並查集做法:

可以先設定聯通的點為n,每次聯通邊新增進並查集則n--即可

class solution 

boolean add(int a,int b,int p)

public int maxnumedgestoremove(int n, int edges)

for(int i = 0; i < edges.length; ++i)}}

for(int i = 0; i <= n; ++i)pb[i] = pa[i];

for(int i = 0; i < edges.length; ++i)

if(t == 2)

}if(cc > 1 || cb > 1)return -1;//大於一是因為剛開始並查集就有乙個節點,就是根節點

return res;

}}

精妙的dfs(需要分別儲存123三種型別邊,然後dfs他們)

演算法思想:

這道題用普通的dfs就可以解,思路如下:

首先dfs alice 和 bob,其中有一位不能dfs走完全部節點,則返回-1.

之後,清空資料,從1節點開始,dfs只走3型別的邊,dfs完記錄最多能訪問多少個節點count。這些節點組成乙個可用公共邊互通的子集,子集內遍歷訪問的邊數就是count-1;

再找下乙個未訪問的節點,繼續dfs,並繼續形成子集,並把所有的子集邊數相加為sumbian = sum(count[i] - 1);

這個sum則是alice和bob遍歷中,能公用的最大邊數。

則alice和bob 訪問使用的邊數量為: common = (n - 1) + (n - 1) - sum

最大可刪除的邊為: edges.length - common = edges.length - (n - 1) * 2 + sum.

class solution 

for(int i = 0; i < l; ++i)

dfs(1, 0);

if(cnt < n)return -1;

cnt = 0;

arrays.fill(f, false);

dfs(1, 1);

if(cnt < n)return -1;

arrays.fill(f, false);

int com = 0;

for(int i = 1; i <= n; ++i)

}return l - (n - 1 << 1) + com;

}void dfs(int v, int t)

if(t == 0 || t == 1)}}

}

LEETCODE 第 205 場周賽

修改字串中的?字元,使得字串中不存在連續相同的字母 1 n 100 僅包含小寫字母和?字元 很暴力的題目,貪心選取就結束了 define sz x int x.size class solution string modifystring string s 給定兩個整數陣列nums1和nums2。返...

leetcode 第132場周賽

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...

leetcode周賽 第176場

題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...