有一个List<String>,里面装的全部都是数字字符串,比如{"1","2","5","6"},现在要进行插入,加入我要在index = 1的位置执行插入操作,那么List<String>就会变成{"1","2","3","5","6"},同样,现在在index = 2的位置执行插入操作,那么List<String>就会变成{"1","2","3","4","5","6"}。
看到这里,你是不是觉得很简单。
好吧,第一关来了
我现在还要在index = 1 的位置执行插入操作,那么List<String>就会变成{"1","2","25","3","4","5","6"}
是不是还是很简单,别急!现在还要在index = 1的位置执行插入操作,那么List<String>就会变成{"1","2","24","25","3","4","5","6"}。依次下去,当List<String>变成{"1","2","21","22","23","24","25","3","4","5","6"}的时候,再在index = 1的位置执行插入操作,那么List<String>就会变成{"1","2","205","21","22","23","24","25","3","4","5","6"},哈哈,升级了,位数增加,如此下去,就可以往前插入无数条。
如果你觉得还是简单,那好
假如现在List<String>是{"1","2","25","3","4","5","6"},现在我要在index = 2的位置执行插入操作,那么List<String>就会变成{"1","2","25","26","3","4","5","6"},如此下去,当List<String>变成{"1","2","25","26","27","28","29","3","4","5","6"}的时候,在"29"元素的后面执行插入操作,那么List<String>就会变成{"1","2","25","26","27","28","29","295","3","4","5","6"},又升级了!如此下去,在"2"和"3"之间就可以往前或者往后插入无数条记录了。
你有更简单明了的实现吗?
看到这里,你是不是觉得很简单。
好吧,第一关来了
我现在还要在index = 1 的位置执行插入操作,那么List<String>就会变成{"1","2","25","3","4","5","6"}
是不是还是很简单,别急!现在还要在index = 1的位置执行插入操作,那么List<String>就会变成{"1","2","24","25","3","4","5","6"}。依次下去,当List<String>变成{"1","2","21","22","23","24","25","3","4","5","6"}的时候,再在index = 1的位置执行插入操作,那么List<String>就会变成{"1","2","205","21","22","23","24","25","3","4","5","6"},哈哈,升级了,位数增加,如此下去,就可以往前插入无数条。
如果你觉得还是简单,那好
假如现在List<String>是{"1","2","25","3","4","5","6"},现在我要在index = 2的位置执行插入操作,那么List<String>就会变成{"1","2","25","26","3","4","5","6"},如此下去,当List<String>变成{"1","2","25","26","27","28","29","3","4","5","6"}的时候,在"29"元素的后面执行插入操作,那么List<String>就会变成{"1","2","25","26","27","28","29","295","3","4","5","6"},又升级了!如此下去,在"2"和"3"之间就可以往前或者往后插入无数条记录了。
你有更简单明了的实现吗?
在列表的指定位置插入指定元素(可选操作)。
2.“加入我要在index = 1的位置执行插入操作”:是不是在index = 1的位置插入一个数?
3.插入后的数据{"1","2","3","5","6"}:为什么得到的数据是在index = 3的位置?
4.现在在index = 2的位置执行插入操作:与第2步一样的操作吗?
5.插入后的数据{"1","2","3","4","5","6"}:与第3步有同样的疑问。真心没看懂题意
2,是在index=1位置执行插入操作,只要执行了这个操作,那么这个地方就会根据规则自动插入一个数
3,因为你是在需要插入的位置插入数字,插入的这个占据了这个位置,后面的数字就自动往后面移动
4,恩,是一样的插入操作
这样吧,这里不能画图,我就用几组数据来形容吧
1、源数据,里面都是字符串,为了方便,就不加引号了
{1,2,4,6};
2、在index=1的位置执行插入操作,这个插入操作不是说随便你插入哪一个数字,而是要按照一定的规则,这里面因为index=1的时候,是"2","2"后面是"4",所以在这地方执行插入操作,就会变成
{1,2,3,4,6}
因为插入,后面的数字自动往后移动
3、如果第一个数字和第二个数字之间的数字相差值为1,比如"1","2",就像现在index = 0的时候,在这里插入操作,就会变成
{1,15,2,3,4,6}
4、继续在index = 0执行插入操作
{1,14,15,2,3,4,6}
5、继续
{1,13,14,15,2,3,4,6}
6、当变成
{1,11,12,13,14,15.。。}
7、继续在index = 0执行插入操作
{1,105,11,12,13,14.。。}
8、也就是如果前面一个数字和后面一个数字的数字值中间不允许塞入一个数字的时候,那么就自动增长一位,并且倒数第二位减1
9、"15"到"2"之间的规则也是如此
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("4");
list.add("5");
list.set(1, "3");//结果:1 3 4 5
// list.add(1, "3");//结果:1 3 2 4 5
// list.add("3");// 结果:1 2 4 5 3
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
不知道楼主怎么向他的List里面添加数据的,我反正没有实现,希望楼主把他的代码贴出来.
很有意思
{1,15,2,3,4,6}
问:为什么是加入的是15,而不是别的(16),能否细说下规则
static void Main(string[] args)
{
List<string> vals = new List<string>();
int[,] insert = new int[,] {{2,15},{10,16},{1,23}};//需要插入的项 //initialize List<string>
vals.Add("1");
vals.Add("2");
vals.Add("4");
vals.Add("5"); for (int i = 0; i < insert.GetLength(0); i++) //insert.GetLength(0)获取该数组的第一个维度长度
{
ListInsert(insert[i,0],insert[i,1].ToString(),ref vals);
}
foreach (string val in vals)
{
Console.Write(val + " ");
}
} private static void ListInsert(int index, string item, ref List<string> vals)
{
if (vals.Count >= index)
{
vals.Insert(index, item);
}
else
{
vals.Insert(vals.Count, item); //当index > List<string>元素大小时,默认将该item插入到最后
//vals.Add(item); //add方法也可以实现该功能(当index > List<string>元素大小时,默认将该item插入到最后)
}
}
LZ也许可以换个方式描述,有这种功能后能干什么。
public List<String> insert(int index){
return null;
}
};
楼主应该是这个意思,但是我不明白这样有什么意思?
这是不完全归纳?完全没意思!
{0, 1}
每次插入时,新值即为 前一个数 和 后一个数 的 平均值。那么:
插入 1:{0, 0.5, 1}
插入 1:{0, 0.25, 0.5, 1}
插入 1:{0, 0.125, 0.25, 0.5, 1}
插入 2:{0, 0.125, 0.1875, 0.25, 0.5, 1}
插入 5:{0, 0.125, 0.1875, 0.25, 0.5, 0.75, 1}你所提问题用了整数,把问题其实稍微复杂化了。