一個月速刷leetcodeHOT100 day07 輪轉數組 除自身以外的乘積 找到字符串中所有字母異位詞

輪轉數組

給定一個整數數組 nums,將數組中的元素向右輪轉 k 個位置,其中 k 是非負數。
示例 1:
輸入: nums = [1,2,3,4,5,6,7], k = 3
輸出: [5,6,7,1,2,3,4]

解釋:

向右輪轉 1 步: [7,1,2,3,4,5,6]

向右輪轉 2 步: [6,7,1,2,3,4,5]

向右輪轉 3 步: [5,6,7,1,2,3,4]

示例 2:

輸入:nums = [-1,-100,3,99], k = 2

輸出:[3,99,-1,-100]

解釋:

向右輪轉 1 步: [99,-1,-100,3]

向右輪轉 2 步: [3,99,-1,-100]
思路:都是在數組末尾和開頭做操作 直接用數組方法,
不過用數組方法并沒有體現算法思想,用算法思想來搞反轉三次,第一次反轉整個數組,第二次反轉前k個,第三次反轉剩余部分,

// 最快方法
var rotate = function(nums,key){nums.unshift(...nums.splice(nums.length - k % nums.length, k))}
//此方法超時
var rotate = function(nums, k) {let nums1 = [...nums]for(let i = 0 ; i < k ; i++){let res = nums1.pop()nums1.unshift(res)}return nums1};
//用算法做
const reverse = (nums, start, end) => {while (start < end) {[nums[start++], nums[end--]] = [nums[end], nums[start]];}}function rotate(nums, k) {if (!nums || nums.length === 0) {return [];}k %= nums.length;if (k <= 0) {return nums;}reverse(nums, 0, nums.length - 1);console.log(nums)reverse(nums, 0, k - 1);console.log(nums)reverse(nums, k, nums.length - 1);console.log(nums)return nums;}
//[ 6, 5, 4, 3, 2, 1 ]
//[ 4, 5, 6, 3, 2, 1 ]
//[ 4, 5, 6, 1, 2, 3 ]

除自身以外數組的乘積

給你一個整數數組?nums,返回?數組?answer?,其中?answer[i]?等于?nums?中除?nums[i]?之外其余各元素的乘積?。
題目數據?保證?數組?nums之中任意元素的全部前綴元素和后綴的乘積都在??32 位?整數范圍內。
請?**不要使用除法,**且在?O(_n_)?時間復雜度內完成此題。
示例 1:
輸入: nums = [1,2,3,4]
輸出: [24,12,8,6]
示例 2:
輸入: nums = [-1,1,0,-3,3]
輸出: [0,0,9,0,0]
思路:前綴和和后綴和相乘 兩次for循環

var productExceptSelf = function(nums) {let answer = new Array(nums.length).fill(1)let prefix = 1;for (let i = 1; i < nums.length; i++) {prefix = nums[i -1] * prefixanswer[i] *= prefix}let suffix = 1;for(let i = nums.length -2; i >= 0; i--){suffix = nums[i + 1] *suffixanswer[i] *= suffix}return answer};

找到字符串中所有字母異位詞

中等
相關標簽
相關企業
給定兩個字符串 s 和 p,找到 s 中所有 p 的 異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。
異位詞 指由相同字母重排列形成的字符串(包括相同的字符串)。
示例 1:
輸入: s = “cbaebabacd”, p = “abc”
輸出: [0,6]
解釋:
起始索引等于 0 的子串是 “cba”, 它是 “abc” 的異位詞。
起始索引等于 6 的子串是 “bac”, 它是 “abc” 的異位詞。
示例 2:
輸入: s = “abab”, p = “ab”
輸出: [0,1,2]
解釋:
起始索引等于 0 的子串是 “ab”, 它是 “ab” 的異位詞。

起始索引等于 1 的子串是 “ba”, 它是 “ab” 的異位詞。

起始索引等于 2 的子串是 “ab”, 它是 “ab” 的異位詞。
思路:維護一個滑動窗口 用charCodeat方法獲取字母的ascall碼值.

var findAnagrams = function(s, p) {const len = s.length// 首先定義一個長度為26的數組charNumList,用來存放每個小寫字母出現的次數。const charNumList = new Array(26).fill(0)const res = []let left = 0, right = 0for (let i = 0; i < p.length; i++) {// 對于字符串p中的每個字母,通過p[i].charCodeAt() - 97獲取其ASCII碼值,并將其減去97,// 得到該字母在charNumList中對應的下標。將該下標的元素值+1,表示該字母出現了一次。charNumList[p[i].charCodeAt() - 97]++}while (right < len) {// charNumList[s[right].charCodeAt() - 97]-- 將當前字符對應的元素值-1,表示該字符出現了一次。charNumList[s[right].charCodeAt() - 97]--// charNumList[s[right].charCodeAt() - 97] < 0,// 當前字符在s中出現的次數已經超過了p中出現的次數,// 則需要移動左指針進行調整,直到當前字符在s中出現的次數小于等于p中出現的次數。while (charNumList[s[right].charCodeAt() - 97] < 0) {charNumList[s[left].charCodeAt() - 97]++left++}//說明找到了一個滿足條件的“字母異位詞”,將left保存在結果數組res中if (right - left + 1 === p.length) {res.push(left)}right++}return res};

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

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

相關文章

系統思考—跳出癥狀看全局

結束了《系統思考—跳出癥狀看全局》的迭代課程后&#xff0c;我感觸頗深。通過一個深入的案例研討、互動討論和實戰演練&#xff0c;學員們不僅更好地理解了如何跳出癥狀看全局&#xff0c;還掌握了制定更具前瞻性和可持續性策略的方法。我們還探討了如何在實際工作中應用這些…

《python編程從入門到實踐》day38

# 昨日知識點回顧 定義、遷移模型Entry # 今日知識點學習 18.2.7 Django shell 每次修改模型后&#xff0c;看到重啟后的效果需要重啟shell&#xff0c;退出shell會話Windows系統按ctrlZ或者輸入exit() 18.3 創建頁面&#xff1a;學習筆記主頁 創建頁面三階段&#xf…

介紹一下Hugging Face,這個公司的背景是什么

Hugging Face是一家成立于2016年的人工智能公司&#xff0c;專注于為AI研究人員和開發者提供開源模型庫和工具。以下是關于Hugging Face公司的詳細背景介紹&#xff1a; 公司歷史與創始人&#xff1a; Hugging Face由Clment Delangue、Julien Chaumond和Thomas Wolf三位法國籍…

E0144 “const char *“ 類型的值不能用于初始化 “char *“ 類型的實體

解決方案&#xff1a; 在Visual Studio中&#xff0c;在項目上右鍵&#xff0c;屬性 >> C/C >> 語言 >> 符合模式&#xff0c;改為“否”。

AI大模型探索之路-基礎篇5:GLM-4解鎖國產大模型的全能智慧與創新應用

目錄 前言一、GLM4大模型總體概述二、GLM4和GPT4功能對比三、GLM4和GPT4性能對比1、基礎能力&#xff08;英文&#xff09;2、指令跟隨能力3、對齊能力4、長文本能力5、多模態-文生圖 四、GLM-4 ALL Tools1、文生圖2、代碼解釋器3、網頁瀏覽4、Function Call5、多工具自動調用 …

【學習筆記】關于建模時需要調整的變量

在進行回歸分析時&#xff0c;選擇調整變量&#xff08;也就是模型中的協變量&#xff09;需要謹慎考慮。調整的變量并不一定必須是混雜因素&#xff0c;但通常情況下&#xff0c;目的是為了控制那些可能扭曲主要自變量和因變量關系的混雜因素。除了混雜因素&#xff0c;還有幾…

C語言之指針進階(3),函數指針

目錄 前言&#xff1a; 一、函數指針變量的概念 二、函數指針變量的創建 三、函數指針變量的使用 四、兩段特殊代碼的理解 五、typedef 六、函數指針數組 總結&#xff1a; 前言&#xff1a; 本文主要講述C語言指針中的函數指針&#xff0c;包括函數指針變量的概念、創建…

【面試干貨】事務的并發問題(臟讀、不可重復讀、幻讀)與解決策略

【面試干貨】事務的并發問題&#xff08;臟讀、不可重復讀、幻讀&#xff09;與解決策略 一、臟讀&#xff08;Dirty Read&#xff09;二、不可重復讀&#xff08;Non-repeatable Read&#xff09;三、幻讀&#xff08;Phantom Read&#xff09;四、總結 &#x1f496;The Begi…

Stable Diffusion——U-ViT用于擴散建模的 ViT 主干網

1.概述 擴散模型是最近出現的強大的深度生成模型&#xff0c;可用于生成高質量圖像。擴散模型發展迅速&#xff0c;可應用于文本到圖像生成、圖像到圖像生成、視頻生成、語音合成和 3D 合成。 除了算法的改進&#xff0c;骨干網的改進在擴散建模中也發揮著重要作用。一個典型…

nginx代理前端html

正常配置&#xff0c;通過www.example.com或192.168.20.12:80訪問server {listen 80;server_name example.com www.example.com;root /var/www/html;index index.html index.htm;location / {try_files $uri $uri/ 404;} }解釋&#xff1a; listen 80;&#xff1a;監聽 HTTP 端…

汽車R155法規中,汽車獲取到的VTA證書,E后面的數字表示什么意思?

標簽&#xff1a; 汽車R155法規中&#xff0c;汽車獲取到的VTA證書&#xff0c;E后面的數字表示什么意思&#xff1f;&#xff1b; 汽車&#xff1b;VTA認證; 有些廠商汽車拿到的VTA證書上面寫著E9&#xff0c; 有些廠商汽車拿到的VTA證書上面寫著E5&#xff0c;E9與E5有什么差…

嵌入式之音頻基礎知識

聲音特性 1、響度&#xff1a;人主觀上感覺聲音的大小&#xff08;俗稱音量&#xff09;&#xff0c;由“振幅”和人離聲源的距離決定&#xff0c;振幅越大響度越大&#xff0c;人和聲源的距離越小&#xff0c;響度越大&#xff1b; 2、音調&#xff1a;聲音的高低&#xff0…

多商戶消費券系統源碼(ThinkPHP+FastAdmin+微信公眾號)

打造智能促銷新體驗 一、引言&#xff1a;消費券系統的時代意義 在當今這個數字化高速發展的時代&#xff0c;電子商務和移動支付已經成為人們日常生活的重要組成部分。隨著市場競爭的加劇&#xff0c;多商戶消費券系統作為一種創新的促銷手段&#xff0c;正逐漸受到商家和消…

k8s筆記 | helm包管理

什么是Helm kubenetes包管理器&#xff0c;是查找&#xff0c;分享和使用軟件構件 kubernetes的最佳方式&#xff1b; 可以做什么 從頭開始創建新的chart將chart打包成歸檔(tgz)文件與存儲chart的倉庫進行交互與現有的kubernates集群中安裝和卸載chart管理與Helm一起安裝的 …

從零訓練yolov8

1.收集數據 2.數據標注 pip install labelimg3.劃分數據集 0.2的驗證機0.8的訓練集 import os from shutil import copyfile from sys import exit import randomsource r"D:\Data\imgs\screenc" \\ target_train r"D:\Data\imgs\datasets\mydata\images\t…

aws msk加密方式和問控制連接方式

msk加密方式 msk提供了兩種加密方式 靜態加密傳輸中加密 創建集群時可以指定加密方式&#xff0c;參數如下 aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file:/…

Android四大組件 Broadcast廣播機制

一 概述 廣播 (Broadcast) 機制用于進程或線程間通信&#xff0c;廣播分為廣播發送和廣播接收兩個過程&#xff0c;其中廣播接收者 BroadcastReceiver 是 Android 四大組件之一。BroadcastReceiver 分為兩類&#xff1a; 靜態廣播接收者&#xff1a;通過 AndroidManifest.xm…

flutter 實現旋轉星球

先看效果 planet_widget.dart import dart:math; import package:flutter/material.dart; import package:vector_math/vector_math_64.dart show Vector3; import package:flutter/gestures.dart; import package:flutter/physics.dart;class PlanetWidget extends StatefulW…

echarts-樹圖、關系圖、桑基圖、日歷圖

樹圖 樹圖主要用來表達關系結構。 樹圖的端點也收symbol的調節 樹圖的特有屬性&#xff1a; 樹圖的方向&#xff1a; layout、orient子節點收起展開&#xff1a;initialTreeDepth、expandAndCollapse葉子節點設置&#xff1a; leaves操作設置&#xff1a;roam線條&#xff1a…

告別 Dart 中的 Future.wait([])

作為 Dart 開發人員&#xff0c;我們對異步編程和 Futures 的強大功能并不陌生。過去&#xff0c;當我們需要同時等待多個 future 時&#xff0c;我們依賴 Future.wait([]) 方法&#xff0c;該方法返回一個 List<T>。然而&#xff0c;這種方法有一個顯著的缺點&#xff1…