Leetcode第309場周賽

Date: September 4, 2022
Difficulty: medium
Rate by others: ????
Time consuming: 1h30min
在這里插入圖片描述

題目鏈接

競賽 - 力扣 (LeetCode)

題目解析

2399. 檢查相同字母間的距離

class Solution {public:bool checkDistances(string s, vector<int>& distance) {vector<int> arr(26, -1);int n = s.size(), t;for (int i = 0; i < n; ++i) {t = s[i] - 'a';if (arr[t] == -1) arr[t] = i;else if (i - arr[t] - 1 != distance[t]) return false;}return true;}};

沒什么可說的,簡單模擬題。

2400. 恰好移動 k 步到達某一位置的方法數目

class Solution {static constexpr int MAXN = 1050;static constexpr int MOD = 1e9 + 7;vector<vector<int>> memo_;public:Solution(): memo_(MAXN, vector<int>(MAXN, -1)) {}int aux(int dis, int k) {dis = std::abs(dis);if (memo_[dis][k] != -1) return memo_[dis][k];if (dis > k) memo_[dis][k] = 0;else if (dis == k) memo_[dis][k] = 1;else memo_[dis][k] = aux(dis - 1, k - 1) + aux(dis + 1, k - 1);if (memo_[dis][k] > MOD) {memo_[dis][k] %= MOD;}return memo_[dis][k];}int numberOfWays(int startPos, int endPos, int k) {return aux(endPos - startPos, k);}};

力扣

看了一眼題解,發現真的是道數學題,自己沒有推出來,沒有想到去思考用排列組合的想法去做。其實就算想到組合數,自己可能也想不到用遞推式的做法O(k2)O(k^2)O(k2)或者O(k)O(k)O(k)去求組合數,而且還需要求逆元,相比之下自己用記憶化搜索硬搞出來也挺不容易的。用記憶化搜索的一個關鍵在于首先是用距離表示減少變量,然后是負距離和正距離是等價的。

什么時候應該總結一下組合數、逆元這部分的知識。

2401. 最長優雅子數組

class Solution {public:int longestNiceSubarray(vector<int>& nums) {constexpr int MAXN = 1e5 + 5;constexpr int N = 31;vector<int> BITS(N);int t = 1;for (int i = 0; i < N; ++i) {BITS[i]= t;t <<= 1;}vector<int> memo(N, -1);int n = nums.size();int ans = 0, last = -1;for (int i = 0; i < n; ++i) {t = -1;for (int j = 0; j < N; ++j) {if (nums[i] & BITS[j]) {t = std::max(t, memo[j]);memo[j] = i;}}last = std::max(t, last);ans = std::max(ans, i - last);}return ans;}};

自己的思路總體上沒有什么問題,就是滑動窗口,每次將左邊窗口移動到元素最近的&不為0的位置的后面,這個區間內右邊元素和區間內的元素&都是0,但是不能保證在這個區間內前面的元素&為0,需要保存元素的最右左區間,也就是說在這個區間任意兩個元素&都為0,也就是優雅子區間。

看了一下其他人的寫法,發現自己可以復用左區間的位置,當時還是對題目的理解不夠深刻。

2402. 會議室 III

class Solution {public:int mostBooked(int n, vector<vector<int>>& meetings) {using ll = long long;vector<vector<ll>> room(n);sort(meetings.begin(), meetings.end(), [&](auto &&a, auto &&b) {return a[0] < b[0];});for (auto &&meeting : meetings) {bool flag = false;for (int i = 0; i < n; ++i) {if (room[i].empty() || meeting[0] >= room[i].back()) {room[i].push_back(meeting[1]);flag = true;break;}}if (flag) continue;ll minT = room[0].back();int minI = 0;for (int i = 0; i < n; ++i) {if (room[i].back() < minT) {minT = room[i].back();minI = i;}}room[minI].push_back(meeting[1] - meeting[0] + room[minI].back());}int ansN = 0, ansIdx;for (int i = 0; i < n; ++i) {if (room[i].size() > ansN) {ansN = room[i].size();ansIdx = i;}}return ansIdx;}};

寫完前三道題時間只剩下十幾分鐘了,本來想放棄這道題,但是看了一眼題目覺得就是一個很簡單的模擬題嘛,躊躇了一會還是開始寫,越寫越覺得簡單,結果11:55提交一次爆long long,改正沒有改正完全,12:02通過了,還是有些遺憾。不過沒有注意題目的數據范圍,這個鍋我自己背。

周賽總結

優點

總體思維比較活躍,思維轉換速度比較快,實現也還可以。雖然和厲害的人相比還是有差距,但是我覺得已經很不錯了,尤其是第二題在沒有思路的情況下用記憶化搜索過了真不錯。

缺點

還是有些不自信,第四題如果我在第三題做完就全力以赴可能是可以A的,另一個方面是自己忘記去看數據范圍了,導致爆long long,改正又忘記后面沒有改,自食惡果。

改進方案

多加訓練,再接再厲。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383505.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 模板函數、模板類:如果沒有被使用就不會被實例化

C中如果一個模板函數沒有使用過&#xff0c;那么其局部靜態變量都不會被實例化&#xff1a; class A { public:A() {edward::print("A ctor");} };template<typename T> void test() {static A a; }int main() {test<int>(); //如果注釋掉則不會有輸出r…

C++ 條件變量的使用

緒論 并發編程紛繁復雜&#xff0c;其中用于線程同步的主要工具——條件變量&#xff0c;雖然精悍&#xff0c;但是要想正確靈活的運用卻并不容易。 對于條件變量的理解有三個難點&#xff1a; 為什么wait函數需要將解鎖和阻塞、喚醒和上鎖這兩對操作編程原子的&#xff1f;為…

C++Primer學習筆記:第1章 開始

本博客為閱讀《C Primer》&#xff08;第5版&#xff09;的讀書筆記 ps:剛開始的時候我將所有的筆記都放在一篇博客中&#xff0c;等看到第六章的時候發現實在是太多了&#xff0c;導致我自己都不想看&#xff0c;為了日后回顧&#xff08;不那么有心理壓力&#xff09;&#…

【ubuntu】ubuntu14.04上安裝搜狗輸入法

** 在ubuntu14.04.4 desktop 64amd版本上安裝sogou輸入法 ** 0.換安裝源為中國源&#xff08;可選&#xff0c;下載會快些&#xff09; 1.搭fcitx環境 2.安裝sogou for linux 詳細步驟&#xff1a; 因為sogou中文輸入法基于fcitx(Free Chinese Input Toy for X),需要先搭環境…

【ubuntu】ubuntu下用make編譯程序報錯找不到openssl/conf.h

ubuntu下用make編譯程序報錯找不到openssl/conf.h 安裝libssl-dev:i386&#xff0c;sudo apt-get install libssl-dev:i386 看好版本&#xff0c;如果不加i386默認下載的是32位&#xff0c;用ln命令連接過去也還是用不了的!libssl.dev安裝好后&#xff0c;用find / -name libs…

【ubuntu】ubuntu如何改變系統用戶名

ubuntu如何改變系統用戶名 方法1&#xff1a;修改現有用戶名 方法2&#xff1a;創建新用戶&#xff0c;刪掉舊用戶 方法1&#xff1a; * *—&#xff01;&#xff01;&#xff01;有博客說要先改密碼&#xff0c;再改用戶名&#xff0c;否則會出現無法登陸狀況&#xff01;&…

什么是signal(SIGCHLD, SIG_IGN)函數

什么是signal(SIGCHLD, SIG_IGN)函數 在進行網絡編程時候遇到這個函數的使用&#xff0c;自己學習結果如下&#xff0c;有不對請幫忙指正:) signal(SIGCHLD, SIG_IGN)打開manpage康一康~ sighandler_t signal ( int signum, sighandler_t handler );參數1 int signum: 就是…

ssh連接不上linux虛擬機

ssh連接不上linux虛擬機 1.開啟ssh服務 linux虛擬機下命令行輸入&#xff1a; start service ssh如果顯示沒有ssh&#xff0c;就下面兩個試一試哪一個ok&#xff0c;安裝一下ssh&#xff1a; sudo apt-get install openssh-server sudo apt-get install sshd2.還有人說可能是…

沒寫client,想先測試server端怎么辦?

沒寫client&#xff0c;想先測試server端怎么辦&#xff1f; 辦法&#xff1a; 1.先打開終端./server&#xff0c;運行起來server 2.再開一個終端&#xff0c; 輸入nc 127.0.0.1 8888 回車&#xff08;這里port號要和server里邊設置的一致&#xff0c;127.0.0.1是和本機的測試…

【報錯解決】linux網絡編程報錯storage size of ‘serv_addr’ isn’t known解決辦法

linux網絡編程報錯storage size of ‘serv_addr’ isn’t known解決辦法 報錯如下&#xff1a; server.c:18:21: error: storage size of ‘serv_addr’ isn’t known struct sockaddr_in serv_addr, clit_addr; ^server.c:18:32: error: storage size of ‘clit_addr’ isn’…

【c】寫頭文件要加#ifndef,#define, #endif

頭文件首位 編寫.h時&#xff0c; 最好加上如下&#xff0c;用來防止重復包含頭文件&#xff1a; 例如&#xff1a; 要編寫頭文件test.h 在頭文件開頭寫上兩行&#xff1a;#ifndef _TEST_H#define _TEST_H// 文件名的大寫#endif頭文件結尾寫上一行&#xff1a;#endif這樣做是為…

【c】【報錯解決】incompatible implicit declaration

【報錯解決】incompatible implicit declaration 背景; 1.自己封裝的函數wrap.c包含&#xff1a; #include "wrap.h"2.主函數調用如下&#xff1a; #include <stdio.h> #include <stdlib.h> ... #include <errno.h> #include "wrap.h"…

【ubuntu】vim語法高亮設置無效

如果你的.vimrc配置了語法高亮&#xff0c;但是你的vim沒實現&#xff0c;可能你的vim是vim-tiny的黑白版本&#xff0c;你需要vim-gnome這個帶GUI的彩色版本。 apt-get update apt-get upgrade apt-get install vim-gnome reboot打開vi就能看到彩色啦

__attribute__機制介紹

1. __attribute__ GNU C的一大特色&#xff08;卻不被初學者所知&#xff09;就是__attribute__機制。 __attribute__可以設置函數屬性(Function Attribute)、變量屬性(Variable Attribute)和類型屬性(Type Attribute) __attribute__前后都有兩個下劃線&#xff0c;并且后面會緊…

【git】git基本操作命令

1.建立本地倉庫 git config --global user.name "lora" git config --global user.email "xxxgmail.com"2.建立目錄 mkdir xxx3.初始化 cd xxx //進入目錄 git init //初始化4.將代碼上傳至本地緩存區 git add . //上傳全部 git add 文件名 //…

【git】解決gitlab ip更改問題

有時候因為部署gitlab虛擬機的ip發生變化&#xff0c;gitlab的clone地址沒有同時更新到新的ip&#xff0c; 這導致后續clone報錯&#xff0c;解決辦法如下&#xff1a; 進入部署gitlab的主機&#xff1a; sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.…

gcc -l參數和-L參數

-l參數就是用來指定程序要鏈接的庫&#xff0c;-l參數緊接著就是庫名&#xff0c;那么庫名跟真正的庫文件名有什么關系呢&#xff1f;就拿數學庫來說&#xff0c;他的庫名是m&#xff0c;他的庫文件名是libm.so&#xff0c;很容易看出&#xff0c;把庫文件名的頭lib和尾.so去掉…

【jenkins】jenkins CI/CD搭建基本過程

1.安裝 &#xff08;1&#xff09;安裝java &#xff08;2&#xff09;安裝jenkins &#xff08;3&#xff09;修改jenkins用戶名密碼配置 &#xff08;4&#xff09;啟動jenkins 2. 插件安裝換源 &#xff08;1&#xff09;插件高級選項換地址 &#xff08;2&#xff09;修改…

apt-get常用命令

一&#xff0c;什么的是apt-get 高級包裝工具&#xff08;英語&#xff1a;Advanced Packaging Tools,簡稱&#xff1a;APT&#xff09;是Debian及其衍生發行版&#xff08;如&#xff1a;ubuntu&#xff09;的軟件包管理器。APT可以自動下載&#xff0c;配置&#xff0c;安裝二…

【jenkins】jenkins build項目的三種方式

jenkins致力于CI/CD&#xff0c; 更改代碼只需要在gitlab push之后&#xff0c;jenkins重新build便可以在tomcat上實現更新部署。 以下為三種構建方式&#xff1a; 1.freestyle project 0. 安裝插件Deploy to container, 并安裝憑證 github連接創建item設置build和post-build …