中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

懷化市建設(shè)局網(wǎng)站地址百度網(wǎng)盤客服中心電話

懷化市建設(shè)局網(wǎng)站地址,百度網(wǎng)盤客服中心電話,模擬網(wǎng)站平臺怎么做,陜西省住房城鄉(xiāng)建設(shè)部門戶網(wǎng)站文章目錄 題目代碼詳解 題目 給定一系列正整數(shù),請設(shè)計一個盡可能高效的算法,查找倒數(shù)第K個位置上的數(shù)字。 輸入格式: 輸入首先給出一個正整數(shù)K,隨后是若干非負(fù)整數(shù),最后以一個負(fù)整數(shù)表示結(jié)尾(該負(fù)數(shù)不算在序列內(nèi)&#…

文章目錄

    • 題目
    • 代碼
    • 詳解

題目

給定一系列正整數(shù),請設(shè)計一個盡可能高效的算法,查找倒數(shù)第K個位置上的數(shù)字。

輸入格式:

輸入首先給出一個正整數(shù)K,隨后是若干非負(fù)整數(shù),最后以一個負(fù)整數(shù)表示結(jié)尾(該負(fù)數(shù)不算在序列內(nèi),不要處理)。

輸出格式:

輸出倒數(shù)第K個位置上的數(shù)據(jù)。如果這個位置不存在,輸出錯誤信息NULL。

輸入樣例:

4 1 2 3 4 5 6 7 8 9 0 -1

輸出樣例:

7

代碼

#include <stdio.h>
#include <stdlib.h>// 定義鏈表節(jié)點(diǎn)結(jié)構(gòu)
struct ListNode {int val;struct ListNode* next;
};// 查找倒數(shù)第K個位置上的數(shù)字
int findKthFromEnd(struct ListNode* head, int k) {if (!head || k <= 0) return -1; // 如果鏈表為空或k小于等于0,返回-1表示錯誤struct ListNode* slow = head;struct ListNode* fast = head;// 快指針先移動k步for (int i = 0; i < k; ++i) {if (!fast) return -1; // 如果鏈表長度小于k,返回-1表示錯誤fast = fast->next;}// 同時移動慢指針和快指針,直到快指針到達(dá)鏈表尾部while (fast) {slow = slow->next;fast = fast->next;}return slow->val;
}int main() {int k;scanf("%d", &k);int num;struct ListNode* head = NULL;struct ListNode* tail = NULL;// 構(gòu)建鏈表while (scanf("%d", &num) && num >= 0) {struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));newNode->val = num;newNode->next = NULL;if (!head) {head = newNode;tail = newNode;} else {tail->next = newNode;tail = newNode;}}int result = findKthFromEnd(head, k);if (result != -1) {printf("%d\n", result);} else {printf("NULL\n");}// 釋放鏈表內(nèi)存while (head) {struct ListNode* temp = head;head = head->next;free(temp);}return 0;
}

詳解

這個問題要求找出一個正整數(shù)序列中倒數(shù)第K個元素的值。為了解決這個問題,代碼使用了一個快慢指針的方法,并且用鏈表來存儲輸入的序列。下面是對這個算法和代碼的詳細(xì)解釋:

算法邏輯

  1. 使用快慢指針:

    • 快指針 (fast) 和慢指針 (slow) 都從鏈表的頭結(jié)點(diǎn)開始。
    • 先讓快指針向前移動K步。這樣,快慢指針之間就保持了K個節(jié)點(diǎn)的距離。
    • 然后,同時移動快指針和慢指針,直到快指針到達(dá)鏈表的末尾。此時,慢指針?biāo)诘奈恢镁褪堑箶?shù)第K個節(jié)點(diǎn)。
  2. 邊界條件處理:

    • 如果鏈表為空(head == NULL),或者K值不合理(k <= 0),函數(shù)直接返回-1,表示錯誤。
    • 如果鏈表長度小于K,也就是快指針在移動K步之前已經(jīng)到達(dá)了鏈表末尾,函數(shù)同樣返回-1。

代碼解釋

  1. 鏈表節(jié)點(diǎn)定義:

    • struct ListNode 定義了鏈表的節(jié)點(diǎn)結(jié)構(gòu),包括節(jié)點(diǎn)值 val 和指向下一個節(jié)點(diǎn)的指針 next。
  2. 主函數(shù) main:

    • 讀取K值。
    • 通過循環(huán)讀取輸入的正整數(shù),并構(gòu)建鏈表。遇到負(fù)數(shù)時停止讀取。
    • 調(diào)用 findKthFromEnd 函數(shù)來查找倒數(shù)第K個元素的值。
  3. 查找函數(shù) findKthFromEnd:

    • 初始化快慢指針。
    • 讓快指針先移動K步。
    • 同時移動快慢指針,直到快指針到達(dá)末尾。
    • 返回慢指針?biāo)赶虻墓?jié)點(diǎn)的值。
  4. 輸出結(jié)果:

    • 如果返回值不是-1,則輸出該值。
    • 如果返回值是-1,輸出"NULL"。
  5. 釋放內(nèi)存:

    • 循環(huán)釋放鏈表的每個節(jié)點(diǎn),避免內(nèi)存泄露。

這個算法的時間復(fù)雜度是O(n),因為它最多遍歷鏈表兩次:一次用于構(gòu)建鏈表,一次用于找到倒數(shù)第K個元素。

http://www.risenshineclean.com/news/66290.html

相關(guān)文章:

  • 哪個網(wǎng)站可以免費(fèi)學(xué)設(shè)計百度平臺商家客服電話
  • 常州外貿(mào)網(wǎng)站建設(shè)公司網(wǎng)絡(luò)科技有限公司
  • 麻栗坡做網(wǎng)站線下實體店如何推廣引流
  • 織夢本地做網(wǎng)站手機(jī)網(wǎng)址大全123客戶端下載
  • 網(wǎng)站制作軟件排名上海企業(yè)網(wǎng)站seo
  • 湖南新能源公司中企動力網(wǎng)站建設(shè)com天堂網(wǎng)
  • 網(wǎng)站設(shè)計公司 上線上免費(fèi)推廣平臺都有哪些
  • 裝飾公司怎樣做網(wǎng)站重慶seo小潘大神
  • 做網(wǎng)站前提需要什么四川網(wǎng)絡(luò)推廣seo
  • 萬齊網(wǎng)站建設(shè)谷歌瀏覽器官方app下載
  • 網(wǎng)站一般如何做搜索功能網(wǎng)站推廣公司排行榜
  • 共青團(tuán)智慧團(tuán)建登錄網(wǎng)站百度推廣一年要多少錢
  • 軟件開發(fā)可以做網(wǎng)站么企業(yè)網(wǎng)絡(luò)營銷推廣方案
  • 網(wǎng)頁建設(shè)與網(wǎng)站設(shè)計心德體會多合一seo插件破解版
  • 網(wǎng)站職位推薦怎么做鞏義網(wǎng)站推廣優(yōu)化
  • 企業(yè)網(wǎng)站建設(shè)是什么優(yōu)化營商環(huán)境
  • 接做網(wǎng)站單子seo營銷工具
  • 云龍徐州網(wǎng)站開發(fā)做網(wǎng)站的軟件叫什么
  • 湖南網(wǎng)站建設(shè)mxtiaseo關(guān)鍵詞排名優(yōu)化制作
  • 男的女的做那個的視頻網(wǎng)站百度導(dǎo)航下載2022最新版
  • 如何制作自己的網(wǎng)站免費(fèi)福州seo網(wǎng)站管理
  • 百度搜索引擎優(yōu)化方案關(guān)鍵詞優(yōu)化排名公司
  • 網(wǎng)站建設(shè)公司有杭州網(wǎng)絡(luò)
  • 企業(yè)官網(wǎng)網(wǎng)站模板下載不了品牌推廣內(nèi)容
  • 如何查詢網(wǎng)站建立時間廣告公司經(jīng)營范圍
  • 網(wǎng)站鏈群怎么做網(wǎng)絡(luò)自動推廣軟件
  • 做網(wǎng)站的主營業(yè)務(wù)搜外網(wǎng)
  • 鄭州app開發(fā)網(wǎng)站建設(shè)營銷推廣公司案例
  • 如何套模板做網(wǎng)站發(fā)帖推廣
  • 網(wǎng)站開發(fā)估價鄭州seo外包