刷題筆記(第八天)

1. 請補全JavaScript代碼,實現一個函數,要求如下:
  • 根據輸入的數字范圍[start,end]和隨機數個數"n"生成隨機數
  • 生成的隨機數存儲到數組中,返回該數組
  • 返回的數組不能有相同元素
    注意: 不需要考慮"n"大于數字范圍的情況
    輸入:getUniqueNums(2,10,4)
    輸出:[4,6,2,8]
const _getUniqueNums = (start,end,n) => {let a = [];let count = 0;while (count < n) {let x = Math.floor(Math.random() * (end - start) + start)if (a.indexOf(x) === -1) {a.push(x);count++;}}return a;
}

解題思路:Math.random()*(end-start)+start生成指定范圍內的隨機數 并且使用Math.floor()轉化為整數,判斷該數字是否存在于數組中,不存在則將該數字存為數組,直到數組長度為n。

2. 兩數相加給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,并且每個節點只能存儲 一位 數字。請你將兩個數相加,并以相同形式返回一個表示和的鏈表。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:

  • 輸入:l1 = [2,4,3], l2 = [5,6,4]
  • 輸出:[7,0,8]
  • 解釋:342 + 465 = 807.

解題思路:l1l2兩個鏈表同時從頭結點遍歷取值,相加,如果兩數相加大于0,下一個要相加的數要注意進位,計算得到一個數、便存入鏈表中,最后將

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
var addTwoNumbers = function (l1, l2) {let node = new ListNode('0');let head = node;let add = 0;while(l1 || l2 || add) {let a = l1===null ? 0 : l1.val;let b = l2===null ? 0 : l2.val;let s = a + b + add;add = s >=10 ? 1 : 0;node.next = new ListNode(s % 10);node = node.next;if (l1) l1=l1.next;if (l2) l2=l2.next;}return head.next;
};
3. 整數反轉:給你一個 32 位的有符號整數 x ,返回將 x 中的數字部分反轉后的結果。如果反轉后整數超過 32 位的有符號整數的范圍 [?2^31, 2^31 ? 1] ,就返回 0。假設環境不允許存儲 64 位整數(有符號或無符號)。

輸入:x = 123 輸出:321
輸入:x = -123 輸出:-321
輸入:x = 120 輸出:21

/*** @param {number} x* @return {number}*/
var reverse = function (x) {let sum = 0;let max = Math.pow(2, 31) - 1, min = -max - 1;if (x < min || x > max) {return 0;}while (x != 0) {let a = x % 10;x = parseInt(x / 10);sum = sum * 10 + a;}if(sum > max || sum < min) {return 0;}return sum;};
4. 盛水最多的容器

給定一個長度為 n 的整數數組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i])
找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。返回容器可以儲存的最大水量。

/*** @param {number[]} height* @return {number}*/
var maxArea = function(height) {let left=0;let right=height.length-1;let maxArea=0;while(left<right) {let currentArea=(right-left)*Math.min(height[left],height[right]);maxArea = maxArea > currentArea ? maxArea : currentArea;if (height[left]<height[right]) {left++;} else {right--;}}return maxArea;
};
5. 整數轉羅馬數字

例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則只適用于以下六種情況:

  1. I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
  2. X 可以放在 L (50) 和 C (100) 的左邊,來表示40 和 90。
  3. C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
    給你一個整數,將其轉為羅馬數字。
  • 示例1
    • 輸入: num = 3
    • 輸出: “III”
  • 示例2
    • 輸入: num = 4
    • 輸出: “IV”
/*** @param {number} num* @return {string}*/
var intToRoman = function(num) {let qian = ['','M','MM','MMM']; // 分別表示0,一千、兩千、三千 (1<=num<=3999) let bai = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'];let shi = ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'];let ge = ['','I','II','III','IV','V','VI','VII','VIII','IX'];let q = Math.floor(num/1000);let b = Math.floor(num/100%10);let s = Math.floor(num/10%10);let g = Math.floor(num%10);return qian[q] + bai[b] + shi[s] + ge[g];
};
6. 羅馬數字轉整數
  • 示例1
    • 輸入: s = “III”
    • 輸出: 3
  • 示例 2:
    • 輸入: s = “IV”
    • 輸出: 4
  • 示例 3:
    • 輸入: s = “IX”
    • 輸出: 9
/*** @param {string} s* @return {number}*/
var romanToInt = function(s) {let m=new Map([['I',1],['V',5],['X',10],['L',50],['C',100],['D',500],['M',1000]]);let res=0;for(let i=0;i<s.length;i++) {let left=m.get(s[i]);let right=m.get(s[i+1]);res+=left<right?-left:left;}return res;
};

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

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

相關文章

【C++11】auto與decltype關鍵字使用詳解

系列文章目錄 C11新特性使用詳解-持續更新 文章目錄 系列文章目錄前言一、auto關鍵字1.根據變量的初始化表達式來推導變量的類型2.const與引用 二、decltype關鍵字1.推斷表達式的類型2.const與引用 三、總結 前言 auto和decltype是C11引入的倆個重要的新關鍵字&#xff0c;用…

簡單幾步,借助Aapose.Cells將 Excel XLS 轉換為PPT

數據呈現是商業和學術工作的一個重要方面。通常&#xff0c;您需要將數據從一種格式轉換為另一種格式&#xff0c;以創建信息豐富且具有視覺吸引力的演示文稿。當您需要在幻燈片上呈現工作表數據時&#xff0c;需要從 Excel XLS 轉換為 PowerPoint 演示文稿。在這篇博文中&…

原理Redis-QuickList

QuickList **問題1&#xff1a;**ZipList雖然節省內存&#xff0c;但申請內存必須是連續空間&#xff0c;如果內存占用較多&#xff0c;申請內存效率很低。怎么辦&#xff1f; 為了緩解這個問題&#xff0c;我們必須限制ZipList的長度和entry大小。 **問題2&#xff1a;**但是…

[網鼎杯 2018]Fakebook

[網鼎杯 2018]Fakebook 打開環境出現一個登錄注冊的頁面 在登錄和注冊中發現 了地址欄出現變化&#xff0c;掃一波看看 看看robots.txt和flag.php 訪問robots.txt看看 再訪問user.php.bak <?php class UserInfo { public $name ""; public …

Head、Neck、Backbone介紹

在深度學習中&#xff0c;通常將模型分為三個部分&#xff1a;backbone、neck 和 head。 Backbone&#xff1a;backbone 是模型的主要組成部分&#xff0c;通常是一個卷積神經網絡&#xff08;CNN&#xff09;或殘差神經網絡&#xff08;ResNet&#xff09;等。backbone 負責…

ON1 Photo RAW 2024 for Mac——專業照片編輯的終極利器

ON1 Photo RAW 2024 for Mac是一款專為Mac用戶打造的照片編輯器&#xff0c;以其強大的功能和易用的操作&#xff0c;讓你的照片編輯工作變得輕松愉快。 一、強大的RAW處理能力 ON1 Photo RAW 2024支持大量的RAW格式照片&#xff0c;能夠讓你在編輯過程中獲得更多的自由度和更…

練習九-利用狀態機實現比較復雜的接口設計

練習九-利用狀態機實現比較復雜的接口設計 1&#xff0c;任務目的&#xff1a;2&#xff0c;RTL代碼3&#xff0c;RTL原理框圖4&#xff0c;測試代碼5&#xff0c;波形輸出 1&#xff0c;任務目的&#xff1a; &#xff08;1&#xff09;學習運用狀態機控制的邏輯開關&#xff…

【C++11】=default與=delete關鍵字使用詳解

系列文章目錄 C11新特性使用詳解-持續更新 文章目錄 系列文章目錄一、default關鍵字1. 為什么要引入default關鍵字2. 注意事項3. 使用default關鍵字有什么好處4.實例代碼 二、delete關鍵字1. 為什么要引入delete關鍵字2. 注意事項3. 使用場景3.1刪除默認構造函數3.2 刪除拷貝構…

2023.11.22 -數據倉庫的概念和發展

目錄 https://blog.csdn.net/m0_49956154/article/details/134320307?spm1001.2014.3001.5501 1經典傳統數倉架構 2離線大數據數倉架構 3數據倉庫三層 數據運營層,源數據層&#xff08;ODS&#xff09;&#xff08;Operational Data Store&#xff09; 數據倉庫層&#…

開發上門送桶裝水小程序要考慮哪些業務場景

上門送水業務已經有很長一段時間了&#xff0c;但是最開始都是給用戶發名片、貼小廣告&#xff0c;然后客戶電話訂水&#xff0c;水站工作人員再上門去送&#xff0c;這種人工記單和派單效率并不高&#xff0c;并且電話溝通中也比較容易出現偏差&#xff0c;那么根據這個情況就…

IT 領域中的主要自動化趨勢

48%的IT自動化流程屬于IT服務管理&#xff0c;過去一年中&#xff0c;IT運維自動化增長了272%。 IT部門從交付者轉變為戰略伙伴 今年的《工作自動化指數》數據顯示&#xff0c;自動化正在蔓延到組織的各個部門&#xff0c;越來越多的部門采用自動化&#xff0c;并且IT以外的員工…

一條命令徹底卸載Linux自帶多個版本jdk

一條命令徹底卸載Linux自帶多個版本jdk 檢查系統已經安裝的jdk rpm -qa | grep java卸載所有已經安裝的 jdk xargs 將參數逐個傳遞 將已安裝的 java 程序逐個當做參數傳遞給 rpm -e --nodeps rpm -qa | grep java | xargs rpm -e --nodeps再次檢查系統已經安裝的jdk rpm -qa | …

JS實現二分查找

最近在面試的時候被問到手寫實現二分查找&#xff0c;雖然二分查找很早就聽過&#xff0c;也知道實現原理&#xff0c;但是手擼起來&#xff0c;總是差點意思&#xff0c;正好復習一下。作為前端程序員&#xff0c;可能面試絕大部分公司不需要能寫很復雜的算法問題&#xff0c;…

Azure Machine Learning - 搜索中的語義排名

目錄 什么是語義排名&#xff1f;語義排名的工作原理如何收集和總結輸入語義排名的輸出如何對摘要進行評分 語義功能和限制 在 Azure AI 搜索中&#xff0c;“語義排名”通過使用語言理解對搜索結果重新排名來顯著提高搜索相關性&#xff0c; 本文概括性地介紹了語義排名工作原…

Nodejs JavaScript 字符串加密

情景 問題的場景是這樣的&#xff1a;我們需要在瀏覽器cookie中存儲用戶名&#xff0c;但又不想直接明文存儲&#xff0c;所以對它進行了簡單的加密存儲。 因為是簡單的加密&#xff0c;目的只是不希望明文存儲。我們使用了Base64 編碼&#xff0c;使得cookie里的存儲不可只讀…

Arthas 監聽 Docker 部署的java項目CPU占比高的信息

1、Linux上安裝Arthas wget https://alibaba.github.io/arthas/arthas-boot.jar2、docker ps 查看目標項目的容器ID 3、copy Arthas 到目標容器中 (注意有 &#x1f615; ) docker cp arthas-boot.jar d97e8666666:/4、進入到目標容器目錄中 docker exec -it d97e8666666 /b…

5-7求三種數的和

#include<stdio.h> int main(){double sum10;double sum20;double sum30;double sum;int i;for(i1;i<100;i){sum1sum1i;}printf("sum1結果是&#xff1a;%15.6f\n",sum1);for(i1;i<50;i){sum2sum2i*i;}printf("sum2結果是&#xff1a;%15.6f\n"…

TS是什么、為什么、怎么辦

TS是什么 javascript程序的靜態類型檢查器 為什么要用TS js編寫時在預期不同類型值的地方使用了某種類型的值&#xff0c;導致常見的類型錯誤 js只能提供動態類型&#xff0c;也就是運行一下代碼才能知道發生了什么&#xff0c;需要靜態類型的檢查 TS怎么用 1、安裝vscode…

連接服務器的腳本

對于記不住的服務器密碼且不愿用三方工具俺簡單寫了個腳本&#xff08;檢測下最近shell腳本的學習效果咋樣&#xff09; expect 是處理交互的一種腳本語言&#xff0c;spawn啟動指定進程 -> expect獲取指定關鍵字 -> send想指定進程發送指定指令 -> 執行完成后退出 sp…

Oracle:poor sql導致的latch: cache buffers chains案例

巡檢時&#xff0c;執行如下sql發現長會話&#xff1a; SELECT SE.SID,SE.SERIAL#,TO_CHAR(LOGON_TIME,YYYY-MM-DD HH24:MI:SS),SE.STATUS,SE.OSUSER,SE.MACHINE,SE.PROGRAM,SE.BLOCKING_SESSION, SE.SQL_ID,SE.PREV_SQL_ID ,SE.EVENT,SE.P1TEXT,SE.P1,SE.P2TEXT,SE.P2,SE.P3…