PART I
smoosh多用几个循环就可以了,创建一个新的数组用于临时存储。
public static void smoosh(int[] ints) { int[] reads= new int[ints.length]; for (int i=0;i<ints.length;i++) { reads[i]=-1; } reads[0]=ints[0]; int j=1; for (int i=1;i<ints.length;i++) { if(ints[i-1]!=ints[i]) { reads[j]=ints[i]; j++; } } for(int i=0;i<ints.length;i++) { ints[i]=reads[i]; } }
PART II
之前没有加size>0的判断条件,结果最后一项list9的squish总是报错,因为它是空的,head本身就是null,不存在null.next,所以有currentNode.next的判断一定会出错。
public void squish() { SListNode currentNode=head; if(size>0) { while(currentNode.next!=null) { if(currentNode.item.equals(currentNode.next.item)) { currentNode.next=currentNode.next.next; size--;} else currentNode=currentNode.next; } } }
PART III
public void twin() { SListNode currentNode=head; while(currentNode!=null) { currentNode.next=new SListNode(currentNode.item,currentNode.next);; currentNode=currentNode.next.next; size=size*2; } }
时间: 2024-10-05 10:34:25