楊輝三角**

一、題目

給定一個非負整數?numRows生成「楊輝三角」的前?numRows?行。

在「楊輝三角」中,每個數是它左上方和右上方的數的和。

示例 1:

輸入: numRows = 5
輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例?2:

輸入: numRows = 1
輸出: [[1]]

提示:

  • 1 <= numRows <= 30

二、源代碼

int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int** c = malloc(numRows * sizeof(int*));*returnSize = numRows;*returnColumnSizes = malloc(numRows * sizeof(int));for (int i = 0; i < numRows; i++) {(*returnColumnSizes)[i] = i + 1;c[i] = malloc((i + 1) * sizeof(int));c[i][0] = c[i][i] = 1;for (int j = 1; j < i; j++) {// 左上方的數 + 正上方的數c[i][j] = c[i - 1][j - 1] + c[i - 1][j];}}return c;
}

三、解題思路

1.函數參數與返回值

int** generate(int numRows, int* returnSize, int** returnColumnSizes)

功能:生成包含 numRows 行的楊輝三角。

參數:

numRows:需要生成的楊輝三角的行數(輸入參數)。

returnSize:用于傳出結果的行數(輸出參數,最終值等于 numRows)。

returnColumnSizes:用于傳出每行的元素個數(輸出參數,是一個數組,其中 returnColumnSizes[i] 表示第 i 行的元素數)。

返回值:int** 類型(二維數組),存儲生成的楊輝三角。

2.核心邏輯解析

(1)分配二維數組空間(存儲楊輝三角)

int** c = malloc(numRows * sizeof(int*));

楊輝三角有 numRows 行,因此先為每行分配一個指針(int* 類型),存儲每行的首地址。c 是指向這些指針的指針(二維數組的首地址)。

(2)設置返回的行數

*returnSize = numRows;

通過 returnSize 指針告訴調用者:生成的楊輝三角有 numRows 行。

(3)分配每行的元素個數數組

*returnColumnSizes = malloc(numRows * sizeof(int));

楊輝三角的第 i 行(從 0 開始計數)有 i+1 個元素(例如第 0 行 1 個元素,第 1 行 2 個元素,以此類推)。

這里為存儲每行元素個數的數組分配空間(長度為 numRows)。

(4)填充每行數據

for (int i = 0; i < numRows; i++) {

????// 第i行有i+1個元素,記錄到returnColumnSizes中

????(*returnColumnSizes)[i] = i + 1;

????

????// 為第i行分配i+1個int的空間

????c[i] = malloc((i + 1) * sizeof(int));

????

????// 每行的第一個和最后一個元素都是1

????c[i][0] = c[i][i] = 1;

????

????// 填充每行中間的元素(j從1到i-1)

????for (int j = 1; j < i; j++) {

????????// 中間元素 = 上一行的左上角元素 + 上一行的正上方元素

????????c[i][j] = c[i - 1][j - 1] + c[i - 1][j];

????}

}

外層循環 i 遍歷每一行(0 到 numRows-1)。

首先記錄第 i 行的元素個數為 i+1(存到 returnColumnSizes[i])。

為第 i 行分配 i+1 個 int 的空間(存儲該行的具體元素)。

楊輝三角的特性:每行第一個元素(j=0)和最后一個元素(j=i)都是 1,因此直接賦值為 1。

內層循環 j 遍歷每行的中間元素(1 到 i-1),這些元素的值等于上一行(i-1)中左側元素(j-1)和正上方元素(j)的和(核心規則)。

(5)返回結果

return c;

返回存儲楊輝三角的二維數組。

四、總結

這段代碼通過動態內存分配創建二維數組,結合楊輝三角的特性(首尾為 1,中間元素為上兩行之和),逐行填充數據,最終生成指定行數的楊輝三角,并通過輸出參數返回結果的結構信息(行數和每行元素數)。

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

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

相關文章

Vue3 的單文件組件(.vue 文件)中,在 <script>、<template>、<style> 標簽外輸入內容不會導致程序報錯

在 <script>、<template>、<style> 標簽外首行誤輸入內容 vtsvts <script setup lang"ts" name"BaseDocxPreviewDialog"> /*** docx文件預覽模態框組件*/ defineOptions({ name: "BaseDocxPreviewDialog" }); import { …

LVS負載均衡群集和LVS+Keepalived群集

1、群集 1.1群集的含義 由多臺主機構成&#xff0c;但對外只表現為一個整體&#xff0c;只提供一個訪問入口&#xff08;域名與IP地址&#xff09;&#xff0c;相當于一臺大型計算機。 1.2 企業群集分類 負載均衡群集&#xff1a;提高應用系統的響應能力、盡可能處理更多的…

LeetCode力扣-hot100系列(5)

這一篇主要講一講回溯&#xff0c;除了N皇后問題是困難題&#xff0c;不過N皇后知道了咋做也不難。回溯整體上還是好做的&#xff0c;直到套路容易做出來&#xff0c;題目容易理解。回溯[1]全排列問&#xff1a;給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的…

機器學習05——多分類學習與類別不平衡(一對一、一對其余、多對多)

上一章&#xff1a;機器學習04——決策樹 下一章&#xff1a;機器學習06——支持向量機 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、多分類學習&#xff08;一&#xff09;…

2025.9.11總結

閱讀《拿鐵因素》有感昨天看完《拿鐵因素》&#xff0c;這本書讓我明白&#xff0c;如果不去主動去管理自己的財務&#xff0c;解決自己從前的財務問題&#xff0c;我很難過上自己想要的生活。今天就所讀的內容&#xff0c;探究如何將這本書的內容運用到自己的一個日常生活中。…

Android,Jetpack Compose,坦克大戰游戲案例Demo

代碼如下&#xff08;這只是個簡單案例而已&#xff09;&#xff1a; package com.example.myapplicationimport android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Canvas impo…

zookeeper是啥

ZooKeeper是一個開源的分布式協調服務&#xff0c;主要用于解決分布式系統中的數據一致性、狀態同步和協作問題?。它通過提供高可用、強一致性的服務&#xff0c;成為分布式系統的“指揮中心”?。以下是其核心功能和應用場景&#xff1a;核心功能 分布式同步? 通過原子廣播協…

【開題答辯全過程】以 基于Android的智慧旅游APP開發為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

如何選擇?SEO 與 GEO 的 5 個核心分野

在 30 秒內&#xff0c;以下是您需要了解的有關 SEO 和 GEO 之間差異的信息&#xff1a; SEO&#xff08;搜索引擎優化&#xff09;&#xff1a;讓您的網站出現在 Google 搜索中。目標&#xff1a;吸引用戶點擊您的鏈接。GEO&#xff08;生成引擎優化&#xff09;&#xff1a;…

基于MATLAB的光學CCD全息成像仿真程序實現

基于MATLAB的光學CCD全息成像仿真程序實現一、流程 #mermaid-svg-g3dkhZSC3Go4a2kH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g3dkhZSC3Go4a2kH .error-icon{fill:#552222;}#mermaid-svg-g3dkhZSC3Go4a2kH .er…

Java大廠面試實錄:產業互聯網大數據與AI服務場景下的微服務與智能搜索(含詳細解讀)

Java大廠面試實錄&#xff1a;產業互聯網大數據與AI服務場景下的微服務與智能搜索&#xff08;含詳細解讀&#xff09; 場景開場 &#x1f3ed;&#x1f984; 午后陽光正好&#xff0c;王老登背著“Java一把梭”的背包&#xff0c;精神抖擻地走進了產業互聯網大數據與AI服務大廠…

Win_Server遠程桌面(RDP)服務調用GPU并提上傳輸幀率和USB設備重定向

說明&#xff1a;Windows遠程桌面服務&#xff08; RDP &#xff09;&#xff0c;RDP服務是可以無顯卡運行的&#xff0c;顯示遠程桌面的時候并不調用顯卡&#xff0c;可以做一些基本的管理操作&#xff0c;為提升RDP的性能&#xff0c;可以開啟顯卡加速&#xff08; OpenGL&am…

Docker(⑤Kali Linux-HexStrike AI安裝)

卸載 WSL 里的 Ubuntuwsl --unregister Ubuntu查看當前已安裝的發行版wsl --list --verbose下載kali-linuxwsl --install -d kali-linuxKali 服務端安裝sudo apt update && sudo apt upgrade -y sudo apt install python3 python3-venv python3-pip git -y克隆源碼 &am…

查找算法和遞推算法

查找算法題目 1&#xff1a;找班級里的 “小明星”題目描述&#xff1a;班級有 10 個同學的編號&#xff08;1 - 10&#xff09;&#xff0c;輸入一個編號&#xff0c;判斷是否是 “小明星”&#xff08;假設編號為 5 的是小明星&#xff09;&#xff0c;是就輸出 “找到小明星…

2025 年PT展前瞻:人工智能+如何走進普通人的生活?

導讀&#xff1a;2025年&#xff0c;人工智能正在加速融入日常生活&#xff0c;提升著每一個普通人的幸福感與獲得感。清晨&#xff0c;智能手環在你最淺的睡眠階段輕柔震動&#xff0c;用最科學的方式將你喚醒&#xff1b;通勤路上&#xff0c;智能網聯汽車早已規劃好躲避擁堵…

1-機器學習與大模型開發數學教程-第0章 預備知識-0-1 集合與邏輯基礎(集合運算、命題邏輯、量詞)

在正式進入機器學習與大模型的數學核心之前&#xff0c;我們需要先打好“語言”和“邏輯”的基礎。 這一章會從 集合與邏輯 入手&#xff0c;它們就像是編程中的語法規則&#xff1a; 集合告訴我們“對象屬于不屬于某個范圍”&#xff1b;邏輯告訴我們“命題對不對、能不能推出…

字節 Trae vs 騰訊 CodeBuddy vs 阿里 Qoder:三大 AI-IDE 集成 OneCode 深度對比與體驗測評

一、對比背景&#xff1a;AI-IDE 與低代碼融合的行業必然性 在低代碼開發進入 “AI 賦能期” 的 2025 年&#xff0c;AI 驅動的集成開發環境&#xff08;AI-IDE&#xff09;已成為低代碼平臺效率提升的核心載體。全球 AI-IDE 市場規模突破 50 億美元&#xff0c;年增長率超 70…

DeerFlow 與 MCP 區別深度解析

目錄 引言 一、DeerFlow 與 MCP 的詳細概念說明 1. DeerFlow&#xff1a;面向研究自動化的多智能體應用框架 2. MCP&#xff1a;連接 AI 模型與外部系統的標準化通信協議 二、核心定位&#xff1a;應用框架與通信協議的本質 1. 角色不同 2. 技術架構 三、功能特性&…

視覺對象類型

矩形類型 對于最基本的視覺效果,Qt Quick 提供了一種繪制矩形的類型。這些矩形可以用顏色或垂直漸變著色。該類型還可以在矩形上繪制邊框。 若要繪制矩形以外的自定義形狀,請參閱類型或使用該類型顯示預渲染圖像。 import QtQuickItem {width: 320h

排序---選擇排序(Selection Sort)

一、選擇排序的基本概念 選擇排序&#xff08;Selection Sort&#xff09;是一種簡單直觀的排序算法&#xff0c;其核心思想是每次從待排序元素中找到最值&#xff08;最小值或最大值&#xff09;&#xff0c;將其放到已排序序列的末尾&#xff0c;重復此過程直到所有元素完成排…