报数游戏-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, ","))

}
相关推荐
迷途之人不知返35 分钟前
链表相关的算法题(2)
数据结构·算法·链表
nju_spy39 分钟前
力扣每日一题(四)线段树 + 树状数组 + 差分
数据结构·python·算法·leetcode·面试·线段树·笔试
xie0510_42 分钟前
排序算法
数据结构·算法·排序算法
guygg881 小时前
基于自适应傅里叶分解(AFD)及其改进算法的信号分解与重构实现
算法
黑岚樱梦1 小时前
代码随想录打卡day25:56.合并区间
数据结构·算法
自由生长20241 小时前
科普-BOM是什么?和UTF-8什么关系?
算法
小年糕是糕手1 小时前
【数据结构】常见的排序算法 -- 插入排序
c语言·开发语言·数据结构·学习·算法·leetcode·排序算法
墨染点香2 小时前
LeetCode 刷题【142. 环形链表 II】
算法·leetcode·链表
海琴烟Sunshine2 小时前
leetcode 263. 丑数 python
python·算法·leetcode
信仰_2739932432 小时前
Guava Cache淘汰算法
算法·guava