• 逢三退一(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数组解决问题)

  • 相关阅读:
    数据结构(双向链表...)操作API
    本地正常,打包到服务器,页面不见了
    objective c数据封装
    2. 两数相加
    在图像中画点,画框
    面试题 16.04. 井字游戏
    12.3 运动对象分割与配准算法实现
    3. 无重复字符的最长子串
    4. 寻找两个正序数组的中位数
    python读写文件模式
  • 原文地址:https://www.cnblogs.com/bkyljk/p/8125190.html
Copyright © 2020-2023  润新知