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

}
相关推荐
今天吃饺子1 小时前
小创新模型!6种2024算法优化BiTCN-SVM单变量输入单步预测,MATLAB机器学习预测全家桶再更新...
人工智能·算法·机器学习·支持向量机·matlab
廖显东-ShirDon 讲编程2 小时前
《零基础Go语言算法实战》【题目 2-5】函数参数的值传递和引用传递
算法·程序员·go语言·web编程·go web
不玩return的马可乐2 小时前
LeetCode 747. 至少是其他数字两倍的最大数
数据结构·c++·程序人生·算法·leetcode
bgf_me3 小时前
代码随想录算法训练营第三十二天|509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯
算法
怎么名字都重复3 小时前
1.两数之和--力扣
java·数据结构·算法·leetcode·软件工程
Odaily_3 小时前
SVM赛道概览:MoveVM落地,SVM能走多远
人工智能·算法·机器学习·支持向量机·数据挖掘
深图智能3 小时前
OpenCV的一种改进型的素描特效算法
图像处理·opencv·算法·计算机视觉
Mr.W.T4 小时前
负载均衡原理及算法
算法·负载均衡
KeyPan4 小时前
【机器学习:八、逻辑回归】
人工智能·算法·机器学习·数据挖掘·逻辑回归
yonuyeung4 小时前
代码随想录算法【Day16】
数据结构·算法·leetcode