【LeetCode 算法】Find the Losers of the Circular Game 找出轉圈游戲輸家

文章目錄

  • Find the Losers of the Circular Game 找出轉圈游戲輸家

Find the Losers of the Circular Game 找出轉圈游戲輸家

問題描述:

n 個朋友在玩游戲。這些朋友坐成一個圈,按 順時針方向1n 編號。從第 i 個朋友的位置開始順時針移動 1 步會到達第 (i + 1) 個朋友的位置(1 <= i < n),而從第 n 個朋友的位置開始順時針移動 1 步會回到第 1 個朋友的位置。

游戲規則如下:

1 個朋友接球。

  • 接著,第 1 個朋友將球傳給距離他順時針方向 k 步的朋友。
  • 然后,接球的朋友應該把球傳給距離他順時針方向 2 * k 步的朋友。
  • 接著,接球的朋友應該把球傳給距離他順時針方向 3 * k 步的朋友,以此類推。

換句話說,在第 i 輪中持有球的那位朋友需要將球傳遞給距離他順時針方向 i * k 步的朋友。

當某個朋友第 2 次接到球時,游戲結束。

在整場游戲中沒有接到過球的朋友是 輸家

給你參與游戲的朋友數量 n 和一個整數 k ,請按升序排列返回包含所有輸家編號的數組 answer 作為答案。

1 < = k < = n < = 50 1 <= k <= n <= 50 1<=k<=n<=50

分析

這個問題是一次周賽的Q1。

這樣的問題很討厭,因為它太簡單了,直接模擬就可以了,但是大部分的人潛意識中,會被導向約瑟夫環

沒錯,當時這個問題花了近半小時,雖然AC,但是代碼太挫了。

可能是周賽的影響,今天的每日就很流暢。這個模擬需要注意的是它的No.是從1開始到n。而且是一個環,所以取模是必然的。

這時候就需要一個長度n的標識數組,來記錄是否訪問過。
所以編號為 i i i的人,就會處于數組 i ? 1 i-1 i?1的位置上。
那么下一個可以被訪問的人, j = ( i + r ? k ) j = (i+r*k)%n j=(i+r?k), i i i j j j都是索引
在不停的訪問中,一定會終止,即某個位置第二次被訪問到。
此時把所有未被標記的位置從小到大的記錄到結果中.

目前這個問題似乎,沒有純數學的思路,只能模擬

代碼

模擬

public int[] circularGameLosers(int n, int k) {boolean[] mark = new boolean[n];int r = 0;//圈數for(int i = 0;!mark[i];i =(i+r*k)%n){mark[i] = true;r++;}int[] ans = new int[n-r];for(int i=0,j=0;i<n;i++){if(!mark[i]) ans[j++]= i+1;}return ans;}

時間復雜度 O ( N ) O(N ) O(N)

空間復雜度 O ( N ) O(N) O(N)

Tag

Array

Hash

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

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

相關文章

AD域控制器將輔域控制器角色提升為主域控制器

背景 域控服務器遷移&#xff0c;已將新機器添加為該域的輔域控制器。 主域控制器&#xff1a;test-dc-01 輔域控制器&#xff1a;test-dc-02 需求將主輔域的角色進行互換&#xff0c;test-dc-01更換為輔域&#xff0c;test-dc-02更換為主域。 操作步驟 方法1 命令行修改AD域…

Datawhale Django入門組隊學習Task02

Task02 首先啟動虛擬環境&#xff08;復習一下之前的&#xff09; 先退出conda的&#xff0c; conda deactivate然后cd到我的venv下面 &#xff0c;然后cd 到 scripts&#xff0c;再 activate &#xff08;powershell里面&#xff09; 創建admin管理員 首先cd到項目路徑下&a…

mySQL 視圖 VIEW

簡化版的創建視圖 create view 視圖名 as select col ...coln from 表create view 視圖名&#xff08;依次別名&#xff09; as select col ...coln from 表create view 視圖名 as select col “別名1”&#xff0c;。。。col "別名n" from 表show tab…

Flink的常用算子以及實例

1.map 特性&#xff1a;接收一個數據&#xff0c;經過處理之后&#xff0c;就返回一個數據 1.1. 源碼分析 我們來看看map的源碼 map需要接收一個MapFunction<T,R>的對象&#xff0c;其中泛型T表示傳入的數據類型&#xff0c;R表示經過處理之后輸出的數據類型我們繼續往…

計算機提示vcruntime140_1.dll丟失的解決方法

在使用Windows操作系統時&#xff0c;有時候我們可能會遇到一些應用程序無法正常運行的問題&#xff0c;出現錯誤提示&#xff0c;其中之一可能就是缺少或損壞了vcruntime140_1.dll文件。在遇到這種情況時&#xff0c;我們可以嘗試修復vcruntime140_1.dll文件來解決問題。 先科…

后端 springboot 給 vue 提供參數

前端 /** 發起新增或修改的請求 */requestAddOrEdit(formData) {debuggerif(formData.id undefined) {formData.id }getAction(/material/getNameModelStandard, {standard: this.model.standard,name: this.model.name,model: this.model.model}).then((res) > {if (res …

《零基礎7天入門Arduino物聯網-06》程序基礎-編程語言是什么

配套視頻課程&#xff1a;《零基礎學Arduino物聯網&#xff0c;入門到進階》 配套課件資料獲取&#xff1a;微聯實驗室 配套學習套件購買&#xff1a;淘寶搜索店鋪【微聯實驗室】 程序基礎-編程語言是什么 程序是什么 程序設計可以理解為是用計算機語言創造出一系列指令的過程…

Shell 基本運算符

Shell 基本運算符 Shell 和其他編程語言一樣&#xff0c;支持多種運算符&#xff0c;包括&#xff1a; 算數運算符關系運算符布爾運算符字符串運算符文件測試運算符 原生bash不支持簡單的數學運算&#xff0c;但是可以通過其他命令來實現&#xff0c;例如 awk 和 expr&#…

HuggingFace開源的自然語言處理AI工具平臺

HuggingFace是一個開源的自然語言處理AI工具平臺&#xff0c;它為NLP的開發者和研究者提供了一個簡單、快速、高效、可靠的解決方案&#xff0c;讓NLP變得更加簡單、快速、高效、可靠。 Hugging Face平臺主要包括以下幾個部分&#xff1a; Transformers&#xff1a;一個提供了…

期權定價模型系列【5】—ETF期權數據

1.前言 對期權定價模型進行研究時&#xff0c;往往需要匹配的實際數據&#xff0c;國內上市時間超過兩年、主流的ETF期權包括華夏上證50ETF期權、滬深300ETF期權等&#xff0c;其對應的標的資產分別為華夏上證50ETF、華泰柏瑞滬深300ETF、嘉實滬深300ETF。 2.上證50ETF期權合約…

淺析基于視頻匯聚與AI智能分析的新零售方案設計

一、行業背景 近年來&#xff0c;隨著新零售概念的提出&#xff0c;國內外各大企業紛紛布局智慧零售領域。從無人便利店、智能售貨機&#xff0c;到線上線下融合的電商平臺&#xff0c;再到通過大數據分析實現精準推送的個性化營銷&#xff0c;智慧零售的觸角已經深入各個零售…

數組常用方法總結

數組常用方法總結 一.獲取數組長度1.1 使用length 二.數組轉字符串2.1 Arrays是什么2.2 使用toString() 三. 數組拷貝3.1 使用 copyOf()3.2 copyOfRange() 四.數組排序4.1使用 sort() 五. 數組逆序六. 判斷兩個數組是否相等6.1 使用equals() 一.獲取數組長度 1.1 使用length p…

ArrayList

目錄 1.ArrayList簡介 2.ArrayList的構造 2.1ArrayList() 2.2ArrayList(Collection c) 2.3ArrayList(int initialCapacity) 3.ArrayList常見操作 4.ArrayList的遍歷的遍歷 1.ArrayList簡介 在集合框架中&#xff0c; ArrayList 是一個普通的類&#xff0c;實現了 List…

【jenkins】jenkins流水線構建打包jar,生成docker鏡像,重啟docker服務的過程,在jenkins上一鍵完成,實現提交代碼自動構建的功能

【jenkins】jenkins流水線構建打包jar&#xff0c;生成docker鏡像&#xff0c;重啟docker服務的過程&#xff0c;在jenkins上一鍵完成&#xff0c;實現提交代碼自動構建&#xff0c;服務重啟&#xff0c;服務發布的功能。一鍵實現。非常的舒服。 1. 啟動腳本 shell腳本 這是 s…

MySQL 中 不等于 會過濾掉 Null 的問題

null值與任意值比較時都為fasle not in 、"!"、"not like"條件過濾都會過濾掉null值的數據 SELECT * from temp; SELECT * from temp where score not in (70); 返回null解決方法: SELECT * from temp where score not in (70) or score is null;SELECT…

迅捷視頻工具箱:多功能音視頻處理軟件

這是一款以視頻剪輯、視頻轉換、屏幕錄像等特色功能為主&#xff0c;同時附帶有視頻壓縮、視頻分割、視頻合并等常用視頻處理功能為主的視頻編輯軟件。該軟件操作簡單易用&#xff0c;即使沒有視頻處理經驗的用戶也可以輕松上手。將視頻添加到工具箱對應功能后&#xff0c;簡單…

zookeeper-安裝部署

詳情可以查看添加鏈接描述 1.安裝jdk apt-get install openjdk-8-jdk2.安裝單機zookeeper # 下載 #https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1.tar.gz # 用這個包啟動的時候會報錯Error: Could not find or load main class org.apach…

【OFDM系列】DFT為什么能求頻率幅度譜?DFT后的X[k]與x(n)幅度的關系?DFT/IDFT底層數學原理?

文章目錄 問題引入鋪墊一些小公式DFT公式證明DFT公式分解為4部分先考慮k10的情況:再考慮k1≠0的情況: DFT計算后&#xff0c;X(k)與x(n)的關系&#xff1a; Matlab FFT示例代碼IDFT公式證明Matlab調用FFT/IFFT并繪圖 問題引入 上面是DFT和IDFT的公式&#xff0c;IDFT先不談。在…

django實現文件上傳

在django中實現文件上傳有三種方法可以實現&#xff1a; 自己手動寫使用Form組件使用ModelForm組件 其中使用ModelForm組件實現是最簡單的。 1、自己手寫 先寫一個上傳的頁面 upload_file.html enctype"multipart/form-data 一定要加這個&#xff0c;不然只會上傳文件名…