日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第 190 场力扣周赛

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第 190 场力扣周赛 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2020-05-24

  • 5416. 檢查單詞是否為句中其他單詞的前綴 注意這里的前綴是指單詞的開始,我們首先找到單詞的開始,然后判斷其長度為searchword的子串是否等于searchword即可。 class Solution { public:int isPrefixOfWord(string sentence, string searchWord) {int l1=sentence.length();int l2=searchWord.length();if (!l1||!l2) return 0; // 特殊情況判斷int word=1;for (int i=0;i<=l1-l2;i++){if ((i==0&&sentence[i]!=' ')||(i-1>0&&sentence[i-1]==' '&&sentence[i]!=' ')){// 找到單詞的開始if (sentence.substr(i,l2)==searchWord){return word;}word++;}}return -1;} };
  • 5417. 定長子串中元音的最大數目 1.暴力判斷,時間復雜度為O(s.length()*k),超時 2.使用滑動窗口即可 class Solution { public:int maxVowels(string s, int k) {int l=s.length();if (!l) return 0;int res=0;int cnt=0;vector<bool>vec(l,false); // 存放是不是元音字母for (int i=0;i<l;i++){if (s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'){ vec[i]=true;}}queue<int> myque;for (int i=0;i<k;i++){if (vec[i]) cnt++;}if (cnt==k) return k;res=cnt;for (int i=k;i<l;i++){if (vec[i]) cnt++;if (vec[i-k]) cnt--;res=max(res,cnt);if (res>=k) return k;}if (res>=k) return k;return res;} };
  • 5418. 二叉樹中的偽回文路徑 使用深度優先搜索即可,到葉子節點的時候判斷是否是偽回文路徑,由于數字范圍是0-9, 1. 可以使用vector存放當前路徑上的數值,到葉子節點時判斷vector中是否最多只有一個數值出現一次,可以用 map存放其出現的次數。 2. 使用異或操作,異或操作就是相同為0,不同為1,且n&(n-1)可以消除n二進制表示的最后一個1,由于數字范圍為0-9,我們可以將當前數表示為第幾個二進制位上值為1,比如3:1000,如果所有的數出現的次數是偶數次,那么其異或的結果為0,如果只有一個數出現的次數為奇數次,那么其異或的結果*(其結果-1)就表示把其中的一個1消除了。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:int res=0;int pseudoPalindromicPaths (TreeNode* root) {if (!root) return 0;dfs(root,0);return res;}void dfs(TreeNode* t,int value){value^=(1<<t->val);if (!t->left&&!t->right){ // 如果是葉子節點if (!value||!(value&(value-1))) res++;}if (t->left) dfs(t->left,value);if (t->right) dfs(t->right,value);} };
  • 5419. 兩個子序列的最大點積 使用動態規劃即可,太久沒有寫,都快生疏了... class Solution { public:int maxDotProduct(vector<int>& nums1, vector<int>& nums2) {int l1=nums1.size();int l2=nums2.size();vector<vector<int>> dp(l1+1,vector<int>(l2+1,-100000*500));for (int i=1;i<=l1;i++){for (int j=1;j<=l2;j++){int a=nums1[i-1];int b=nums2[j-1];dp[i][j]=a*b;dp[i][j]=max(dp[i][j],dp[i-1][j-1]+a*b);dp[i][j]=max(dp[i][j],dp[i-1][j-1]);dp[i][j]=max(dp[i][j],dp[i-1][j]);dp[i][j]=max(dp[i][j],dp[i][j-1]);}}return dp[l1][l2];} };

    總結

    以上是生活随笔為你收集整理的第 190 场力扣周赛的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。