輪轉數組 與 消失的數字

輪轉數組

思路一

創建一個新內存空間,將需輪轉的數依次放入,之后在把其它數放入


代碼:

void rotate(int* nums, int numsSize, int k) {k = k % numsSize;// 確定有效的旋轉次數if(k == 0)return;int* newnums = (int*)malloc(sizeof(int) * numsSize);//臨時數組//復制需要旋轉的元素int i;for(i = 0;i < k;i++){newnums[i] = nums[numsSize - k + i];}//復制不需要旋轉的元素for(i = 0;i<numsSize - k;i++){newnums[k + i] = nums[i]; }//拷貝至原數組memmove(nums,newnums,sizeof(int) * numsSize);
}

思路二

三段逆置,這個方法比較不容易想到具體為:

第一段 先把需要旋轉的元素逆置

第二段 再把不需要旋轉的元素逆置

第三段 最后再把整體逆置

這樣子就可以很好的完成題目的需求了

?代碼:

void nizhi(int *arr,int numssize){int left = 0;int right = numssize - 1;while(left < right){int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}
}void rotate(int* nums, int numsSize, int k) {k = k % numsSize;// 確定有效的旋轉次數if(k == 0)return;//第一端 逆置nizhi(nums + (numsSize - k),k);//第二段 逆置nizhi(nums,numsSize - k);//第三段逆置nizhi(nums,numsSize);}

消失的數字?

?思路一

將 0 - n 的數全部加起來,再把數數組中的元素全部減去,剩下的那個數字就是消失的數字

例如:

?

?代碼:

int missingNumber(int* nums, int numsSize){//等差數列算出總和int ret = numsSize*(1+numsSize)/2;int count = 0;//把數組中的數全部加起來for(int i = 0;i<numsSize;i++){count += nums[i];}//拿總數減去數組中的數,得到的就是消失的數字return ret - count;
}

?思路二:

使用位的運算,將 0 ~ n 的數,全部與數組內的數進行 (按位異或) ^ 運算 留下來的數就是缺失的

原理:

任何數都等于 ^ 0? = 自己? ?例如 :001010 ^ 000000 =?001010

任何數 ^ 任何數 = 0? ?例如 :001010 ^?001010 =?000000

知道了這個結論我們再將它帶入實際例子中

我們發現兩兩成對的都被消除了,剩下的那個就是缺少的數字了

注意:0 ^ 0 ^1 ^ 1 ^ 2 ^ 2 ^ 3 ^?3 ^ 5 ^ 5 ^ 4 它們打亂順序對最終結果也不影響

像 1 + 1+ 2 = 4? ?||? ?2 + 1 + 1 = 4一樣沒有區別

代碼:

int missingNumber(int* nums, int numsSize){int find = 0;for(int i = 0;i < numsSize;i++) //先把數組的數字 ^ 完{find ^= nums[i];}for(int i = 0;i <= numsSize;i++)//再把 0~ numsSize 的數字 ^ 完{find ^= i;}return find;
}

或?

int missingNumber(int* nums, int numsSize){int find = 0;for(int i = 0;i < numsSize;i++)//通過i訪問素組所有元素{find ^= nums[i] ^ (i + 1); //i + 1 作為 1 ~ numsSize 去^ ,因為下標是從0開始的}return find;
}

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

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

相關文章

HarmonyOS應用開發者高級認證 試題+答案

判斷題 云函數打包完成后&#xff0c;需要到AppGallery Connect創建對應函數的觸發器才可以在端側中調用&#xff08;錯誤&#xff09; 每一個自定義組件都有自己的生命周期&#xff08;正確&#xff09; 基于端云一體化開發&#xff0c;開發者需要精通前端、后端不同的開發語言…

h2 數據庫Statement was canceled or the session timed out 解決辦法

背景 某項目因需要存儲的數據較少&#xff0c;選擇了h2 數據庫。數據庫的某張表的數據需要全部加載到內存中使用。 最近&#xff0c;某個項目使用該應用時需求比較特殊&#xff0c;使得這張表的數據量增加到了一萬條。此時&#xff0c;查詢全量數據的 SQL 發生了異常&#xf…

遞歸求fabonacci數列 pta

斐波那契數列&#xff08;Fibonacci sequence&#xff09;是一個經典的數列&#xff0c;它由以下遞歸關系定義&#xff1a; [ F(n) F(n-1) F(n-2) ] 其中&#xff0c;( F(0) 0 ) 和 ( F(1) 1 )。 在編程中&#xff0c;遞歸是一種實現斐波那契數列的直觀方法。以下是使用遞…

git之tag操作

查看本地有哪些 tags # git tag -l v0.0.3 v0.0.5 v0.0.6查看遠程有哪些 tags # git ls-remote --tags From https://github.com/eyjian/gomooon.git 1fe7f5ecf369cba34f4328285ce1ec72d62c091e refs/tags/v0.0.3 9371db55046109d7fc9a9f75625d5ec31c326ad1 re…

[muduo網絡庫]——muduo庫Acceptor類(剖析muduo網絡庫核心部分、設計思想)

接著之前我們剖析的muduo庫三大核心組件Channel類&#xff0c;Poller/EpollPoller類&#xff0c;EventLoop類&#xff0c;我們接下來繼續看muduo庫中的其他類&#xff0c;這一篇&#xff0c;我們先來介紹Acceptor類。 Acceptor類 主要功能 Acceptor類用于創建套接字&#xf…

企業OA辦公系統開發筆記:1、搭建后端環境

文章目錄 企業辦公系統&#xff1a;搭建環境一、項目介紹1、介紹2、技術棧3、項目模塊4、數據庫 二、搭建環境1、搭建后端1.1、搭建父工程clfwzx-oa-parent1.2、搭建工具類父模塊common1.3、搭建工具類common的子模塊1.4、搭建實體類模塊model和項目模塊service-oa 2、配置依賴…

親測!史上最全數據庫基礎?!

為什么要學習數據庫 以前在程序中存儲數據是一個變量&#xff0c;對象&#xff1b;數據都存儲在內存中&#xff0c;程序運行結束后就銷毀。 后來學習IO之后&#xff0c;將數據存儲在文件中&#xff0c;做到持久存儲&#xff0c;但是使用不方便。 學習專業的數據存儲軟件——…

基于POSIX的信號量模擬DAG上的并行計算的同步問題

本代碼主題借鑒nju的jyy老師的代碼 自己增加了隨機生成DAG(有向無環圖)(不保證連通)數據進行測試 運行打印結果即為并行計算DAG的拓撲序 #include <pthread.h> #include <semaphore.h> #include <unistd.h> #include <iostream> #include <vector&g…

2024最新最全【NMAP】零基礎入門到精通

一、Nmap介紹 Nmap(Network Mapper&#xff0c;網絡映射器)是一款開放源代碼的網絡探測和安全審核工具。它被設計用來快速掃描大型網絡&#xff0c;包括主機探測與發現、開放的端口情況、操作系統與應用服務指紋識別、WAF識別及常見安全漏洞。它的圖形化界面是Zenmap&#xff…

[AIGC] redis 持久化相關的幾道面試題

文章目錄 1. 什么是Redis持久化&#xff1f;2. Redis 的持久化機制是什么&#xff1f;各自的優缺點&#xff1f;2.1 RDB&#xff08;Redis DataBase&#xff09;&#xff0c;快照2.2 AOF&#xff08;Append Only File&#xff09;&#xff0c;日志 3. 優缺點是什么&#xff1f;…

Vue3的setup

Vue3的setup setup選項是一個接收props和context的函數是一個新的組件選項&#xff0c;作為Composition-API的入口點&#xff0c;只會被執行一次&#xff0c;用于建立數據與邏輯的連接。 注意點 在執行setup函數時&#xff0c;還沒執行created生命周期方法&#xff0c;因此在s…

單核CPU調度

CPU MLFQ 調度 MLFQ即多級反饋隊列調度。在給定時間片中&#xff0c;任務存在不同優先隊列之中等待被執行&#xff0c;MLFQ根據優先級去決定哪個任務在該時間片執行 Round Robin Round Robin即RR&#xff0c;是基于時間片的輪詢調度算法。給每個任務分配一個時間片&#xff…

pixhawk無人機飛控解鎖

飛控解鎖 GitBook 左手油門的遙控解鎖是油門右下角撥&#xff0c;右手油門是油門最低&#xff0c;方向最右。 飛控如何加鎖? 左手油門&#xff1a;油門左下角 右手油門&#xff1a;油門最低&#xff0c;方向最左 飛控解鎖成功后&#xff0c;不推油門的情況下&#xff0c;…

基于SSM+Vue的物流管理系統

運行截圖 獲取方式 Gitee倉庫

大眾點評全國店鋪基礎信息采集-學習培訓店鋪-2024年5月

2024年5月最新采集大眾點評全國(內地)-學習培訓大類-店鋪基礎信息&#xff0c;93余萬家 學習培訓類店鋪示例&#xff1a; 店鋪id k40VtNBN3bixFJIU 店鋪名稱 夢想鋼琴成人鋼琴(珠江新城總部) 十分制效果評分 9.4 十分制服務評分 9.4 十分制環境評分 9.4 人均價格 1233 …

為什么數據庫字符編碼不一致會導致索引失效

引言 數據庫字符編碼不一致是數據庫管理和優化過程中經常遇到的問題之一&#xff0c;尤其在涉及多語言環境和多應用時更為顯著。本文旨在深入探討字符編碼不匹配如何影響SQL查詢性能&#xff0c;導致索引失效&#xff0c;以及其背后的原理。 1. 字符編碼與索引基礎 字符編碼…

【TypeScript模塊簡介以及使用方法】

TypeScript模塊簡介 TypeScript中的模塊&#xff08;Modules&#xff09;是代碼的封裝體&#xff0c;它們可以包含變量、函數、類和接口等。在TypeScript中&#xff0c;模塊可以被其他模塊引用和使用&#xff0c;從而實現代碼的復用和模塊化開發。 TypeScript支持兩種模塊系統…

LORA學習筆記2——訓練集處理

前言 對于ai訓練來說&#xff0c;處理訓練集是模型訓練的重要環節。訓練集的質量對最終模型的質量影響巨大。這里以二次元角色為例&#xff0c;記錄下訓練集處理的流程和一些心得。 素材準備 素材準備有以下幾個需要注意的點&#xff1a; 通常訓練二次元角色需要30張以上的…

14:HAL---CRC校驗

103系列只有一個CRC 前言&#xff1a; CRC&#xff08;Cyclic Redundancy Check&#xff09;&#xff0c;即循環冗余校驗&#xff0c;是一種根據網絡數據包或電腦文件等數據產生簡短固定位數校核碼的快速算法&#xff0c;主要用來檢測或校核數據傳輸或者保存后可能出現的錯誤。…

QX---mini51單片機學習---(8)8*8點陣屏

目錄 1LED點陣屏簡紹 2 8*8點陣屏電路圖74 3 74HC595芯片 4實踐編程 1LED點陣屏簡紹 2 8*8點陣屏電路圖74 怎么點亮&#xff0c;正極給高負極給低 不能同時靜態顯示&#xff0c;跟數碼管動態顯示一樣&#xff0c;反復橫跳&#xff0c;利用視覺效果 3 74HC595芯片 …