手撕算法——鏈表

算法基礎——鏈表-CSDN博客

一、排隊順序

題?來源:洛?

題?鏈接:B3630 排隊順序 - 洛谷

難度系數:★

1. 題目描述

2. 算法原理

????????本題相當于告訴了我們每?個點的后繼,使?靜態鏈表的存儲?式能夠很好的還原這個隊列。

????????數組?[1, n]?的下標可以當做據域,根據題意修指針域即可。

?

注意:可以不需要 e[N] 數組,輸出下標即可?

3. 參考代碼?

#include <iostream>using namespace std;const int N = 1e6 + 10;int n, h;
int ne[N];int main()
{cin >> n;for(int i = 1; i <= n; i++) cin >> ne[i];cin >> h;// 遍歷鏈表for(int i = h; i; i = ne[i]){cout << i << " ";}return 0;
}

二、單向鏈表

題?來源:洛?

題?鏈接:B3631 單向鏈表 - 洛谷

難度系數:★

1. 題目描述

2. 算法原理

????????鏈表模板題,直接實現?個單鏈表即可。

3. 參考代碼

#include <iostream>using namespace std;const int N = 1e5 + 10, M = 1e6 + 10;// 鏈表
int h, id, e[N], ne[N];
int mp[M]; // mp[i] 用來標記 i 這個元素存在什么位置int main()
{int q; cin >> q;// 初始化id++;e[id] = 1;mp[1] = id;while(q--){int op, x, y;cin >> op >> x;int p = mp[x]; // x 存的位置if(op == 1) // x 后面插入{cin >> y;id++;e[id] = y;ne[id] = ne[p];ne[p] = id;mp[y] = id; // 標記 y 這個元素存的位置}else if(op == 2) // 查詢 x 后面的元素{cout << e[ne[p]] << endl;}else // 刪除 x 后面的元素{ne[p] = ne[ne[p]];}}return 0;
}

三、隊列安排

題?來源:洛?

題?鏈接:P1160 隊列安排 - 洛谷

難度系數:★★

1. 題目描述

2. 算法原理

????????頻繁的在某?個位置之前和之后插?元素,因此可以?雙向循環的鏈表來模擬。

3. 參考代碼

#include <iostream>using namespace std;const int N = 1e5 + 10;// 雙向鏈表
int h, pre[N], ne[N];
bool st[N]; // st[x] 表示 x 這個元素是否已經被刪除int n, m;int main()
{cin >> n;// 初始化pre[1] = h;ne[h] = 1;for(int i = 2; i <= n; i++){int k, p; cin >> k >> p;if(p == 0){// i 放在 k 的左邊ne[i] = k;pre[i] = pre[k];ne[pre[k]] = i;pre[k] = i;}else{// i 放在 k 的右邊pre[i] = k;ne[i] = ne[k];pre[ne[k]] = i;ne[k] = i;}}cin >> m;while(m--){int x; cin >> x;// 將 x 刪除if(st[x] == true) continue;ne[pre[x]] = ne[x];pre[ne[x]] = pre[x];st[x] = true; // 標記 x 已經被刪除}for(int i = ne[h]; i; i = ne[i]){cout << i << " ";}return 0;
}

四、約瑟夫問題

題?來源:洛?

題?鏈接:P1996 約瑟夫問題 - 洛谷

難度系數:★

1. 題目描述

2. 算法原理

????????使?循環鏈表模擬即可。

3. 參考代碼

#include <iostream>using namespace std;const int N = 110;int n, m;
int ne[N];int main()
{cin >> n >> m;// 創建循環鏈表for(int i = 1; i < n; i++) ne[i] = i + 1;ne[n] = 1;// 模擬約瑟夫游戲的過程int t = n;for(int i = 1; i <= n; i++) // 執行 n 次出圈操作{for(int j = 1; j < m; j++) // 讓 t 向后移動 m - 1 次{t = ne[t];}cout << ne[t] << " ";ne[t] = ne[ne[t]];}return 0;
}

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

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

相關文章

RAG優化:python從零實現[吃一塹長一智]循環反饋Feedback

本文將介紹一種有反饋循環機制的RAG系統,讓當AI學會"吃一塹長一智",給傳統RAG裝了個"后悔"系統,讓AI能記住哪些回答被用戶點贊/拍磚,從此告別金魚記憶: 每次回答都像在玩roguelike:失敗結局會強化下次冒險悄悄把優質問答變成新知識卡牌,實現"以…

kotlin init執行順序

一 代碼 kotlin: package test.fclass Test1 { }class TestInit(s: String, i: Int) {var name: String? nullvar age 0private var a :Int 1init {this.name sthis.age iprintln("init代碼塊: $name, $age")}}轉成java // Test1.java package test.f;import…

使用cursor開發java案例——springboot整合elasticsearch

安裝elasticsearch 打開cursor&#xff0c;輸入如下提示詞 使用springboot整合elasticsearch。其中elasticsearch服務器ip&#xff1a;192.168.236.134 管理員用戶名elastic 管理員密碼 PdQy_xfR2yLhpok*MK_ 監聽端口9200點Accept all 使用idea打開生成的項目 &#xff0…

Java Collection API增強功能系列之一 Arrays.asList()

在Java編程中&#xff0c;Arrays.asList() 是一個高頻使用卻又容易引發陷阱的工具方法。它能夠快速將數組轉換為列表&#xff0c;但其特殊行為常常讓開發者踩坑。本文將深入剖析該方法的本質特性&#xff0c;并揭示其使用時的注意事項。一、方法定義與基礎用法 1. 方法簽名 p…

vue3 項目的最新eslint9 + prettier 配置

注意&#xff1a;eslint目前升級到9版本了 在 ESLint v9 中&#xff0c;配置文件已經從 .eslintrc 遷移到了 eslint.config.js 配置的方式和之前的方式不太一樣了&#xff01;&#xff01;&#xff01;&#xff01; 詳見自己的語雀文檔&#xff1a;5、新版eslint9prettier 配…

基于FPGA的16QAM+幀同步系統verilog開發,包含testbench,高斯信道,誤碼統計,可設置SNR

目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 16QAM調制解調原理 2.2 幀同步 3.Verilog核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 vivado2019.2仿真結果如下&#xff08;完整代碼運行后無水印&#xff09;&#xff1a; 設置SNR12db 將FPGA數據導入到MATLAB顯…

[學成在線]06-視頻分片上傳

上傳視頻 需求分析 教學機構人員進入媒資管理列表查詢自己上傳的媒資文件。 點擊“媒資管理” 進入媒資管理列表頁面查詢本機構上傳的媒資文件。 教育機構用戶在"媒資管理"頁面中點擊 "上傳視頻" 按鈕。 點擊“上傳視頻”打開上傳頁面 選擇要上傳的文件…

Maven安裝與環境配置

首先我們先介紹一些關于Maven的知識&#xff0c;如果著急直接看下面的安裝教程。 目錄 Maven介紹 Maven模型 Maven倉庫 Maven安裝 下載 安裝步驟 Maven介紹 Apache Maven是一個項目管理和構建工具&#xff0c;它基于項目對象模型(Project Object Model , 簡稱: POM)的概念…

【新能源汽車溫度采集與控制系統設計深度解析】

面向汽車行業研發與測試測量設備從業者的技術指南 一、硬件架構設計 新能源汽車的溫度采集與控制系統是保障電池、電機、電控等核心部件安全運行的核心技術之一。其硬件架構需兼顧高精度、抗干擾、可靠性與集成化&#xff0c;以下從信號調理電路、ADC模塊、隔離設計三個維度展…

AI Tokenization

AI Tokenization 人工智能分詞初步了解 類似現在這個&#xff0c;一格子 一格子&#xff0c;拼接出來的&#xff0c;一行或者一句&#xff0c;像不像&#xff0c;我們人類思考的時候組裝出來的話&#xff0c;并用嘴說出來了呢。

React(四)setState原理-性能優化-ref

setState詳解 實現原理 開發中我們并不能直接修改State來重新渲染界面&#xff1a; 因為修改State之后&#xff0c;希望React根據最新的State來重新渲染界面&#xff0c;但這種方式的修改React并不知道數據發生了變化&#xff1b; React并沒有類似于Vue2中的Object.defineP…

SSH密鑰認證 + 文件系統權限控制 + Git倉庫配置+封存與解封GIT倉庫

在本地服務器上實現多個用戶僅通過git push操作修改倉庫、禁止其他改寫方式的需求&#xff0c;可以通過以下步驟實現&#xff1a; 方法概述 通過SSH密鑰認證 文件系統權限控制 Git倉庫配置&#xff0c;確保用戶僅能通過git push命令提交修改&#xff0c;而無法通過直接操作服…

全文通讀:126頁華為IPD集成產品開發與DFX實戰【文末附可編輯PPT下載鏈接】

綁定資料內容: 12023華為流程體系及落地實施【108頁 PPT】.pptx22024版基于華為IPD與質量管理體系融合的研發質量管理【63頁】.pptx

//TODO 動態代理的本質?

待解決 //TODO 面試題 為啥mybatis的mapper只有接口沒有實現類&#xff0c;但它卻能工作&#xff1f;?(ai參考,待深究源碼) 1. 動態代理生成代理對象 MyBatis 使用 JDK 動態代理 為每個 Mapper 接口生成代理對象&#xff1a; ? 核心類&#xff1a;MapperProxy&#xff08;…

C++11中智能指針的使用(shared_ptr、unique_ptr、weak_ptr)

C11中智能指針的使用(shared_ptr、unique_ptr、weak_ptr) 一、shared_ptr原理 shared_ptr 是另一種智能指針&#xff0c;用于實現多個 shared_ptr 實例共享同一個對象的所有權。它通過內部的控制塊&#xff08;通常是一個包含計數器和指向對象的指針的結構&#xff09;來管理…

2024年認證杯SPSSPRO杯數學建模B題(第二階段)神經外科手術的定位與導航全過程文檔及程序

2024年認證杯SPSSPRO杯數學建模 B題 神經外科手術的定位與導航 原題再現&#xff1a; 人的大腦結構非常復雜&#xff0c;內部交織密布著神經和血管&#xff0c;所以在大腦內做手術具有非常高的精細和復雜程度。例如神經外科的腫瘤切除手術或血腫清除手術&#xff0c;通常需要…

嘗試在軟考62天前開始成為軟件設計師-信息系統安全

安全屬性 保密性:最小授權原則(能干活的最小權限)、防暴露(隱藏)、信息加密、物理保密完整性(防篡改):安全協議、校驗碼、密碼校驗、數字簽名、公證 可用性:綜合保障( IP過濾、業務流控制、路由選擇控制、審計跟蹤)不可抵賴性:數字簽名 對稱加密 DES :替換移位 3重DESAESR…

Rocky9.5基于sealos快速部署k8s集群

首先需要下載 Sealos 命令行工具&#xff0c;sealos 是一個簡單的 Golang 二進制文件&#xff0c;可以安裝在大多數 Linux 操作系統中。 以下是一些基本的安裝要求&#xff1a; 每個集群節點應該有不同的主機名。主機名不要帶下劃線。 所有節點的時間需要同步。 需要在 K8s …

G口服務器和普通服務器之間的區別

今天小編主要來為大家介紹一下G口服務器和普通服務器之間的區別&#xff01; 首先&#xff0c;從硬件配置上看&#xff0c;普通服務器通常都會配備中央處理器、內存和硬盤等基本的硬件配置&#xff0c;能夠適用于各種應用程序和服務&#xff1b;G口服務器除了基礎的硬件配置還增…

Cursor軟件如何刷新機器碼流程

一.退出Cursor軟件賬號 打開Cursor軟件&#xff0c;點擊設置-->General-->Account-->Log out,現將Cursor軟件上登錄的賬戶退出。 二.將Cursor官網上登錄的Cursor賬戶也清空掉 點擊頭像--> ACCOUNT SETTINGS -->Account-->Advanced-->Delete Account-->…