报数游戏-golang

Go 复制代码
package main

import (
	"fmt"
	"sort"
	"strings"
)

type myItem struct {
	index int
	value int
}

func reflushMap(list []*myItem, value int) []*myItem {
	newList := make([]*myItem, 0)

	startIndex := 1
	for i, item := range list {
		if item.value == value {

			for _, m := range list[i+1:] {
				m.value = startIndex
				startIndex++
				newList = append(newList, m)
			}

			for _, m := range list[:i] {
				m.value = startIndex
				startIndex++
				newList = append(newList, m)
			}

			break
		}

	}

	return newList
}

func main() {
	var M int
	fmt.Scan(&M)

	oldList := make([]*myItem, 0)
	for i := 1; i <= 100; i++ {
		oldList = append(oldList, &myItem{
			index: i,
			value: i,
		})
	}

	indexStrs := make([]string, 0)
	for {
		oldList = reflushMap(oldList, M)
		if len(oldList) < M {
			indexs := make([]int, 0)
			for _, item := range oldList {
				indexs = append(indexs, item.index)
			}
			sort.Ints(indexs)

			for _, item := range indexs {
				indexStrs = append(indexStrs, fmt.Sprintf("%d", item))
			}
			break
		}

	}

	fmt.Println(strings.Join(indexStrs, ","))

}
相关推荐
让我们一起加油好吗2 小时前
【基础算法】初识搜索:递归型枚举与回溯剪枝
c++·算法·剪枝·回溯·洛谷·搜索
stbomei3 小时前
基于 MATLAB 的信号处理实战:滤波、傅里叶变换与频谱分析
算法·matlab·信号处理
2401_876221344 小时前
Reachability Query(Union-Find)
c++·算法
德先生&赛先生5 小时前
LeetCode-542. 01 矩阵
算法·leetcode·矩阵
HAH-HAH5 小时前
【洛谷】P2197【模板】Nim 游戏
算法·游戏
lichkingyang5 小时前
最近遇到的几个JVM问题
java·jvm·算法
feifeigo1236 小时前
matlab中随机森林算法的实现
算法·随机森林·matlab
躲着人群6 小时前
次短路&&P2865 [USACO06NOV] Roadblocks G题解
c语言·数据结构·c++·算法·dijkstra·次短路
心动啊1217 小时前
支持向量机
算法·机器学习·支持向量机
小欣加油8 小时前
leetcode 1493 删掉一个元素以后全为1的最长子数组
c++·算法·leetcode