代碼隨想錄day02

977.有序數組的平方

● 力扣題目鏈接
● 給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。

思路

● 暴力排序,時間復雜度O(n + nlogn)
● 使用雙指針,時間復雜度O(n)

代碼

class Solution {public int[] sortedSquares(int[] nums) {int[] res = new int[nums.length]; // 返回的數組,這個題目沒法原地修改int l = 0; int r = nums.length -1;for (int i = res.length - 1; i >= 0; i--) { // 遍歷返回的數組,每個元素都要放到適合的位置if (nums[l] * nums[l] > nums[r] * nums[r]) {res[i] = nums[l] * nums[l]; // 左邊大l++; // 左指針右移} else {res[i] = nums[r] * nums[r]; // 右邊大r--; // 右指針左移}}return res;}
}
// 思路一樣,換成while循環
class Solution {public int[] sortedSquares(int[] nums) {int[] res = new int[nums.length];int l = 0; int r = nums.length - 1;int index = nums.length - 1;while (l <= r) {if (nums[l] * nums[l] > nums[r] * nums[r]) {res[index--] = nums[l] * nums[l];l++;} else {res[index--] = nums[r] * nums[r];r--;}}return res;}
}

209.長度最小的子數組

● 力扣題目鏈接
● 給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的 連續 子數組,并返回其長度。如果不存在符合條件的子數組,返回 0。
思路
● 可以暴力解法,外層循環遍歷數組,內層不斷往后看,更新長度的最小值
● 也可以使用滑動窗口
○ 外層循環遍歷數組,不斷移動快指針,加到sum
○ 一旦發現超過target,就開始移動慢指針,更新res,減去元素
○ 最后看res是否更新過

代碼

class Solution {public int minSubArrayLen(int target, int[] nums) {int s = 0; int sum = 0; int res = Integer.MAX_VALUE;for (int f = 0; f < nums.length; f++) { // 外層循環遍歷數組sum += nums[f];while (sum >= target) { // 一旦超過targetres = Math.min(res, f - s + 1); // 更新ressum -= nums[s++]; // 移動慢指針,減去元素}}return res == Integer.MAX_VALUE ? 0 : res; // 看res是否更新過}
}

59.螺旋矩陣II

● 力扣題目鏈接
● 給定一個正整數 n,生成一個包含 1 到 n^2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。

思路

● 設置四個邊界,不斷循環處理

代碼

class Solution {public int[][] generateMatrix(int n) {int l = 0, r = n - 1, b = 0, t = n - 1, num = 0, tar = n * n;int[][] res = new int[n][n];while (num < tar) {for (int i = l; i <= r; i++) {res[b][i] = ++num;}b++;for (int i = b; i <= t; i++) {res[i][r] = ++num;}r--;for (int i = r; i >= l; i--) {res[t][i] = ++num;}t--;for (int i = t; i >= b; i--) {res[i][l] = ++num;}l++;}return res;}
}

54.螺旋矩陣

● 給你一個 m 行 n 列的矩陣 matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。

思路

● 和上一題類似,但是需要注意給集合中加元素不要重復

代碼

class Solution {public List<Integer> spiralOrder(int[][] matrix) {int l = 0, m = matrix.length - 1, b = 0, n = matrix[0].length - 1;int r = n, t = m, num = 1;List<Integer> res = new ArrayList();while (num <= (m + 1) * (n + 1)) {for (int i = l; i <= r && num <= (m + 1) * (n + 1); i++) { // 這步判斷盡量寫上res.add(matrix[b][i]);num++;}b++;for (int i = b; i <= t && num <= (m + 1) * (n + 1); i++) {res.add(matrix[i][r]);num++;}r--;for (int i = r; i >= l && num <= (m + 1) * (n + 1); i--) {res.add(matrix[t][i]);num++;}t--;for (int i = t; i >= b && num <= (m + 1) * (n + 1); i--) {res.add(matrix[i][l]);num++;}l++;}return res;}
}

劍指 Offer 29.順時針打印矩陣

● 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。

思路

● 與之前思路類似

代碼

class Solution {public int[] spiralOrder(int[][] matrix) {if (matrix == null || matrix.length == 0) return new int[0];int m = matrix.length;int n = matrix[0].length;int[] res = new int[m * n];int index = 0, l = 0, r = n - 1, b = 0, t = m - 1;while (index <= res.length - 1) {for (int i = l; i <= r && index <= res.length - 1; i++) {res[index++] = matrix[b][i];}b++;for (int i = b; i <= t && index <= res.length - 1; i++) {res[index++] = matrix[i][r];}r--;for (int i = r; i >= l && index <= res.length - 1; i--) {res[index++] = matrix[t][i];}t--;for (int i = t; i >= b && index <= res.length - 1; i--) {res[index++] = matrix[i][l];}l++;}return res;}
}

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

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

相關文章

Vue中使用v-bind:class動態綁定多個類名

Vue.js是一個流行的前端框架&#xff0c;它可以幫助開發者構建動態交互的UI界面。在Vue.js開發中&#xff0c;經常需要動態綁定HTML元素的class&#xff08;類名&#xff09;屬性&#xff0c;以改變元素的外觀和行為。本文將介紹采用v-bind:class指令在Vue中如何動態綁定多個類…

【大數據】-- 本地部署 Flink kubernetes operator

目錄 1.說明 1.1 版本 1.2 kubernetes 環境 1.3 參考 2.安裝步驟 2.1 安裝本地 kubernetes 環境

判斷鏈表有環的證明

目錄 1.問題 2.證明 3.代碼實現 1.問題 給你一個鏈表的頭節點 head &#xff0c;判斷鏈表中是否有環。 如果鏈表中有某個節點&#xff0c;可以通過連續跟蹤 next 指針再次到達&#xff0c;則鏈表中存在環。 為了表示給定鏈表中的環&#xff0c;評測系統內部使用…

TansUNet代碼理解

首先通過論文中所給的圖片了解網絡的整體架構&#xff1a; vit_seg_modeling部分 模塊引入和定義相關量&#xff1a; # codingutf-8 # __future__ 在老版本的Python代碼中兼顧新特性的一種方法 from __future__ import absolute_import from __future__ import division fr…

新基建助推數字經濟,CosmosAI率先布局AI超算租賃新紀元

倫敦, 8月14日 - 在英國倫敦隆重的Raffles OWO舉辦的歐盟數字超算新時代戰略合作簽約儀式&#xff0c;CosmosAI、Infinite Money Fund與Internet Research Lab三方強強聯手&#xff0c;達成了歷史性的合作協議&#xff0c;共同邁向超算租賃新紀元。 ? 這次跨界的合作昭示了全球…

Session基礎

文章目錄 什么是Sessionsession與cookie的區別和聯系Session的存Session的取 什么是Session 服務器為每個用戶瀏覽器創建一個會話對象&#xff08;session對象&#xff09;&#xff0c;一個瀏覽器只能產生一個session當新建一個窗口訪問服務器時&#xff0c;還是原來的那個ses…

VR家裝提升用戶信任度,線上體驗家裝空間感

近些年&#xff0c;VR家裝逐漸被各大裝修公司引入&#xff0c;VR全景裝修的盛行&#xff0c;大大增加了客戶“所見即所得”的沉浸式體驗感&#xff0c;不再是傳統二維平面的看房模式&#xff0c;而是讓客戶通過視覺、聽覺、交互等功能更加真實的體驗家裝后的效果。 對于傳統家裝…

本地Linux 部署 Dashy 并遠程訪問教程

文章目錄 簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問 轉載自cpolar極點云文章&#xff1a;本地Linux 部署 Dashy 并遠程訪問 簡介 Dashy 是一個開源的自托管的導航頁配置服務&#xff0c;具有易于使用的可視化編輯器、狀態檢查、小工具和主題等功能。你…

JS如何向數組中添加數組

常見的辦法有 1、push()方法 var arr [a, b, c,d]; arr.push(e); console.log(arr); // [a, b, c, d,e] 2、concat()方法 var arr1 [a, b, c]; var arr2 [d, e, f]; var arr3 arr1.concat(arr2); console.log(arr3); // [a, b, c, d, e, f] 3、可以使用ES6中的spread操作符…

【git】Fork或者git clone克隆了別人項目,如何保持與原項目同步更新

Fork或者git clone克隆了別人項目&#xff0c;如何保持與原項目同步更新 #mermaid-svg-LC920CR873UxZJC3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LC920CR873UxZJC3 .error-icon{fill:#552222;}#mermaid-svg-…

BUUCTF 還原大師 1

題目描述&#xff1a; 我們得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,問號部分是未知大寫字母&#xff0c;為了確定這個神秘字符串&#xff0c;我們通過了其他途徑獲得了這個字串的32位MD5碼。但是我們獲得它的32位MD5碼也是殘缺不全&#xff0c;E903???4D…

【Vue3】自動引入插件-`unplugin-auto-import`

Vue3自動引入插件-unplugin-auto-import&#xff0c;不必再手動 import 。 自動導入 api 按需為 Vite, Webpack, Rspack, Rollup 和 esbuild 。支持TypeScript。由unplugin驅動。 插件安裝&#xff1a;unplugin-auto-import 配置vite.config.ts&#xff08;配置完后需要重啟…

迪瑞克斯拉算法 — 優化

在上一篇迪瑞克斯拉算法中將功能實現了出來&#xff0c;完成了圖集中從源點出發獲取所有可達的點的最短距離的收集。 但在代碼中getMinDistanceAndUnSelectNode()方法的實現并不簡潔&#xff0c;每次獲取minNode時&#xff0c;都需要遍歷整個Map&#xff0c;時間復雜度太高。這…

stable diffusion安裝包和超火使用文檔及提示詞,數字人網址

一&#xff1a;文生圖、圖生圖 1&#xff1a;stable diffusion&#xff1a;對喜歡二次元、美女小姐姐、大眼萌妹的人及其友好哈哈(o^^o) 1&#xff09;&#xff1a;關于安裝包和模型包&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/11_kguofh76gwhTBPUipepw 提取碼…

HTML詳解連載(5)

HTML詳解連載&#xff08;5&#xff09; 專欄鏈接 [link](http://t.csdn.cn/xF0H3)下面進行專欄介紹 開始嘍行高&#xff1a;設置多行文本的間距屬性名屬性值行高的測量方法 行高-垂直居中技巧 字體族屬性名屬性值示例擴展 font 復合屬性使用場景復合屬性示例注意 文本縮進屬性…

阿里云國際站對象儲存OSS的常見問題?

1.什么是阿里云OSS&#xff1f; 阿里云對象存儲服務OSS&#xff08;Object Storage Service&#xff09;&#xff0c;是阿里云提供的海量、安全、低成本、高持久性的云存儲服務&#xff0c;并可無限擴展。其數據設計持久性不低于99.9999999999%&#xff08;12個9&#xff09;&a…

UG NX二次開發(C#)-CAM自定義銑加工的出口環境

文章目錄 1、前言2、自定義銑削加工操作3、出錯原因4、解決方案4.1 MILL_USER的用戶參數4.2 采用自定義銑削的方式生成自定義的dll4.2 配置加工的出口環境4.3 調用dll5、結論1、前言 作為一款大型的CAD/CAM軟件, UG NX為我們提供了豐富的加工模板,通過加工模板能直接用于生成…

oracle怎樣給某個普通用戶授予殺自己用戶會話的權限

一 問題描述 想給某個普通用戶授予殺掉自己會話的權限 二 解決辦法 2.1 用sys用戶創建殺會話的存儲過程 create or replace procedure scott_p_kill_session( v_sid number, v_serial number )asv_varchar2 varchar2(100);beginif v_sid is not null and v_serial is not n…

DTC服務(0x14 0x19 0x85)

DTC相關的服務有ReadDTCInformation (19) service&#xff0c;ControlDTCSetting (85) service和ReadDTCInformation (19) service ReadDTCInformation (19) service 該服務允許客戶端從車輛內任意一臺服務器或一組服務器中讀取駐留在服務器中的診斷故障代碼( DTC )信息的狀態…

【一款互聯網產品全生命周期】每個程序員都有必要讀一讀

文章目錄 1. 需求討論與團隊成員和相關利益相關方討論項目的需求和目標。確定項目的范圍、功能和優先級。 2. 技術選型根據項目需求&#xff0c;選擇合適的技術棧和工具。考慮項目的可維護性、性能要求和團隊的技術背景。 3. 架構設計設計項目的系統架構&#xff0c;包括模塊劃…