逢三退一(boolean數組的使用)


package com.hanqi.count;

// 逢三退一 輸出留到最后值的索引;
public class Count1 {

	//主方法
	public static void main(String[] args) {
		Count1 c = new Count1();
		System.out.println(c.count(6));
		// 方法有返回值  , 傳入數組長度(總共多少數);
	}

	// 逢3 退1;
	public int count (int in) {
		//聲明一個boolean數組
		boolean arr[] = new boolean[in];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = true;
			//把數組的值替換為 ture; 
		}
		int count = arr.length ;  //總計數(獲取數組長度)
		int threecount = 0; // 3次循環計數
		int index =0; //當前數組的序號
		while (count > 1) {
			//只要還有 1個以上的值為true 就會一直運行
			if(arr[ index ]) {
				threecount ++; // 值為treu 時+1 
				if(threecount == 3) {
					arr[index] = false;
					threecount = 0;
					count --; //進一遍總數減1 因為逢3去1  ;
				}
			}
			index ++;  // 放在 if判斷上面 arr.length 長度為500 但是序號是從0開始所以到499結束;
			if (index == arr.length) {
				index = 0;
			}
			//index ++;  放在 if判斷底下歸零后立馬加1 所以不行(邏輯問題);
		}
		int ret = 0;

		// 遍歷 留到最后為true的值得索引
		for (int i = 0; i < arr.length; i++) {
			if (arr[i]) {
				// 值為true時輸出i ,此時i為最后一個值的序號;
				//System.out.println(i);
				ret = i;
				break;
			}
		}
		return ret;
	}
	
}

 這道題提醒了我 換個思路看看;(用boolean數組解決問題)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM