leetcode刷題詳解一

preview

算法題常用API

std::accumulate

函數原型:

template< class InputIt, class T >
T accumulate( InputIt first, InputIt last, T init );

一般求和的,代碼如下:

int sum = accumulate(vec.begin() , vec.end() , 0);

詳細用法參考

lower_bound()

int lower_bound(起始地址,結束地址,要查找的數值) 返回的是數值 第一個等于某元素 的位置。

int index = upper_bound(vec.begin(), vec.end(), target) - vec.begin()

功能:函數lower_bound()在first和last中的前閉后開區間進行二分查找,返回大于或等于target的第一個元素位置。如果所有元素都小于target,則返回last的位置,因為是前閉后開因此這個時候的last會越界,要注意。

找不到返回nums.end()

upper_bound()

int upper_bound(起始地址,結束地址,要查找的數值) 返回的是數值 第一個大于某個元素 的位置。

int index = upper_bound(vec.begin(), vec.end(), target) - vec.begin();

功能:函數upper_bound()返回的在前閉后開區間查找的關鍵字的上界,返回大于target的第一個元素位置。注意:返回查找元素的最后一個可安插位置,也就是“元素值>查找值”的第一個元素的位置。同樣,如果target大于數組中全部元素,返回的是last。(注意:數組下標越界)

binary_search()

bool binary_search(起始地址,結束地址,要查找的數值) 返回的是 是否存在 這么一個數,是一個bool值。

功能: 在數組中以二分法檢索的方式查找,若在數組(要求數組元素非遞減)中查找到indx元素則真,若查找不到則返回值為假。

priority_queue

template<class T,class Container = std::vector<T>,class Compare = std::less<typename Container::value_type>
> class priority_queue;

默認container是vector。

默認compare策略是less。因為默認是大頂堆,首先輸出最大元素,所以最開始來的元素最后才輸出。記住大頂堆比較策略是std::less<T>,小頂堆的比較策略是std::greater<T>

atoi

int atoi( const char *str );

將char*的字符串轉化成整數

min和max

包含在c++標準庫中頭文件<algorithm>

std::min(const T& a, const T& b);
std::max(const T& a, const T& b);
//或者自己寫comp函數
const T& min (const T& a, const T& b, Compare comp);//自定義compare函數如下
static bool compare(const string& s1, const string& s2)
{string ab = s1 + s2;string ba = s2 + s1;return ab < ba; //升序排列。如改為ab > ba, 則為降序排列
}

數據結構

鏈表類型

234. 回文鏈表

**思路:**回文串是對稱的,所以正著讀和倒著讀應該是一樣的,這一特點是解決回文串問題的關鍵。單鏈表無法倒著遍歷,無法使用雙指針技巧。

  • 方法一,把鏈表節點放入棧中再拿出和原來的鏈表比較。算法的時間和空間復雜度都是 O(N)

    class Solution {
    public:bool isPalindrome(ListNode* head) {  stack<int> rec;ListNode *temp = head;while(temp){rec.push(temp->val);temp = temp->next;}while(!rec.empty()||head){if(head->val == rec.top()){head = head->next;rec.pop();}else{return false;}  }return true;}
    };
    
  • 方法二

    **利用雙指針的快慢指針的思想,找出鏈表的中間節點。**雙指針的條件是while(fast!=null && fast->next!=null)

    然后要分清楚鏈表是雙數還是單數。如果fast==null,表明是偶數鏈表,否則是奇數鏈表

    雙指針找中點+反轉一部分節點

img
bool isPalindrome(ListNode* head) {  ListNode* slow = head;ListNode* fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}//fast=nullptr說明是偶數鏈表//fast!=nullptr說明是奇數鏈表ListNode* tail = reverse(slow);ListNode* front = head;while(tail || tail == slow){if(front->val == tail->val){front = front->next;tail = tail->next;}else{return false;}}return true;
}
ListNode* reverse(ListNode* node){if(!node || !node->next){return node;}ListNode* tmp = reverse(node->next);node->next->next = node;node->next = nullptr;return tmp;
}

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

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

相關文章

【python海洋專題四十七】風速的風羽圖

【python海洋專題四十七】風速的風羽圖 圖片 往期推薦 圖片 【python海洋專題一】查看數據nc文件的屬性并輸出屬性到txt文件 【python海洋專題二】讀取水深nc文件并水深地形圖 【python海洋專題三】圖像修飾之畫布和坐標軸 【Python海洋專題四】之水深地圖圖像修飾 【Pyth…

記一次linux操作系統實驗

前言 最近完成了一個需要修改和編譯linux內核源碼的操作系統實驗&#xff0c;個人感覺這個實驗還是比較有意思的。這次實驗總共耗時4天&#xff0c;從對linux實現零基礎&#xff0c;通過查閱資料和不斷嘗試&#xff0c;直到完成實驗目標&#xff0c;在這過程中確實也收獲頗豐&…

pytorch模型優化簡介,未完結版

如有幫助&#xff0c;點贊收藏關注&#xff01; 如需轉載&#xff0c;請注明出處&#xff01; 今天來介紹torch模型中的優化器 優化是指在每個訓練步驟中調整模型參數以減少模型誤差的過程。 優化算法定義如何執行這個過程 所有優化邏輯都封裝在優化器對象中。在這里&#xf…

【黑馬甄選離線數倉day04_維度域開發】

1. 維度主題表數據導出 1.1 PostgreSQL介紹 PostgreSQL 是一個功能強大的開源對象關系數據庫系統&#xff0c;它使用和擴展了 SQL 語言&#xff0c;并結合了許多安全存儲和擴展最復雜數據工作負載的功能。 官方網址&#xff1a;PostgreSQL: The worlds most advanced open s…

音視頻項目——RTSP服務器解析(1)

介紹 利用線程池&#xff0c;實現 RTSP 服務器的高并發請求處理。 RTSP 是音視頻的控制視頻的協議&#xff0c;如果您還不了解&#xff0c;可以看看之前我解析 RTSP 協議的文章。音視頻協議解析(RTP/RTCP/RTSP/RTMP)——RTSP解析-CSDN博客 解析 我們先來看 RTP 的實現。RTP 是音…

Django框架之auth模塊

目錄 一、Auth模塊引入 二、創建超級用戶(管理員) 三、依賴于auth_user表完成登錄注冊功能 【1】基礎登陸 【2】保存用戶狀態 【3】登錄后跳轉 (1) 登錄后才能訪問頁面 -- 局部配置 (2) 登錄后才能訪問頁面 -- 全局配置 (3) 小結 三、修改密碼 四、注銷 五、注冊…

Springboot將多個圖片導出成zip壓縮包

Springboot將多個圖片導出成zip壓縮包 將多個圖片導出成zip壓縮包 /*** 判斷時間差是否超過6小時* param startTime 開始時間* param endTime 結束時間* return*/public static boolean isWithin6Hours(String startTime, String endTime) {// 定義日期時間格式DateTimeFormatt…

【數據結構】—搜索二叉樹(C++實現,超詳細!)

&#x1f3ac;慕斯主頁&#xff1a;修仙—別有洞天 ??今日夜電波&#xff1a;消えてしまいそうです—真夜中 1:15━━━━━━?&#x1f49f;──────── 4:18 &#x1f504; ?? ? ??…

函數計算的新征程:使用 Laf 構建 AI 知識庫

Laf 已成功上架 Sealos 模板市場&#xff0c;可通過 Laf 應用模板來一鍵部署&#xff01; 這意味著 Laf 在私有化部署上的擴展性得到了極大的提升。 Sealos 作為一個功能強大的云操作系統&#xff0c;能夠秒級創建多種高可用數據庫&#xff0c;如 MySQL、PostgreSQL、MongoDB …

js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,對應的值轉換為對象對應的值

1.需求場景 哈嘍 大家好啊&#xff0c;今天遇到一個場景&#xff0c; js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj&#xff0c;將數組中的內容作為對象的key轉化為對象&#xff0c;對應的值轉換為對象對應的值 數組對象中某個屬性的值&#xff0c;轉…

元宇宙現已開放!

在 2023 年 11 月 3 日 The Sandbox 首個全球創作者日上&#xff0c;The Sandbox 聯合創始人 Arthur Madrid 和 Sebastien Borget 宣布元宇宙已開放&#xff0c;已創作完整體驗的 LAND 持有者可以自行將體驗發布至 The Sandbox 地圖上。 精選速覽 LAND 持有者&#xff1a;如果…

在JVM中 判定哪些對象是垃圾?

目錄 垃圾的條件 1、引用計數法 2、可達性分析 3、強引用 4、軟引用 5、弱引用 6、虛引用 判斷垃圾的條件 在Java虛擬機&#xff08;JVM&#xff09;中&#xff0c;垃圾收集器負責管理內存&#xff0c;其中的垃圾收集算法用于確定哪些對象是垃圾&#xff0c;可以被回收…

VBA即用型代碼手冊之工作薄的關閉保存及創建

我給VBA下的定義&#xff1a;VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率&#xff0c;而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。 作為我的學員要利用我的積木編程思想&#xff0c;積木編程最重要的是積木如何搭建…

[Latex] Riemann 問題中的激波,接觸間斷,膨脹波的 Tikz 繪圖

Latex 代碼 \begin{figure}\begin{subfigure}[b]{0.32\textwidth}\centering\resizebox{\linewidth}{!}{\begin{tikzpicture}\coordinate (o) at (0,0);\coordinate (Si) at (2.5,2.5);\coordinate (x) at (1,0);\draw[->] (0,0) -- (3,0) node[right] {$x$};\draw[->] …

ArkTS-自定義組件學習

文章目錄 創建自定義組件頁面和自定義組件生命周期自定義組件和頁面的區別頁面生命周期(即被Entry修飾的組件)組件生命周期(即被Component修飾的組件) Builder裝飾器&#xff1a;自定義構建函數按引用傳遞參數按值傳遞參數 BuilderParam裝飾器&#xff1a;引用Builder函數 這個…

Python 將列表拼接為一個字符串,Python join

目錄 join方法的源碼&#xff1a; 列表數據為字符串 列表數據為數字 三引號也可以使用join join方法的源碼&#xff1a; def join(self, abNone, pqNone, rsNone): # real signature unknown; restored from __doc__"""Concatenate any number of strings.T…

harmonyos應用開發者高級認證考試部分答案

1只要使用端云一體化的云端資源就需要支付費用&#xff08;錯&#xff09; 2所有使用Component修飾的自定義組件都支持onPageShow&#xff0c;onBackPress和onPageHide生命周期函數。&#xff08;錯&#xff09; 3 HarmonyOS應用可以兼容OpenHarmony生態&#xff08;對&#…

一文讀懂如何安全地存儲密碼

目錄 引言 明文存儲 基本哈希存儲 加鹽哈希存儲 適應性哈希算法 密碼加密存儲 小結 引言 密碼是最常用的身份驗證手段&#xff0c;既簡單又高效。密碼安全是網絡安全的基石&#xff0c;對保護個人和組織信息的安全具有根本性的作用。然而有關密碼泄漏的安全問題一再發生…

生物動力葡萄酒和有機葡萄酒一樣嗎?

農業維持了數十萬年的文明&#xff0c;但當人類以錯誤的方式過多干預&#xff0c;過于專注于制造和操縱產品時&#xff0c;農業往往會失敗。如果我們的目標是獲得最高質量的收成&#xff0c;并長期堅持我們的做法&#xff0c;我們就必須與土地打交道。 當我們開始尋找生物動力…

應用內測分發平臺如何上傳應用包體?

●您可免費將您的應用&#xff08;支持蘋果.ios安卓.apk文件&#xff09;上傳至咕嚕分發平臺&#xff0c;我們將免費為應用生成下載信息&#xff0c;但咕嚕分發將會對應用的下載次數進行收費&#xff08;每個賬號都享有免費贈送的下載點數以及參加活動的贈送點數&#xff09;&a…