Part 1.
smoosh()函数,目的是将数组中出现的所有数字产生重复的部分删除,例如11223334444经过smoosh函数后会变成1234.
public static void smoosh(int[] ints) {
// Fill in your solution here. (Ours is twelve lines long, not counting
// blank lines or lines already present in this file.)
int current = 0;
for (int i = current + 1; i < ints.length; i++){
if (ints[current] != ints[i]){
current++;
ints[current] = ints[i];
}
}
for (int i = current + 1; i < ints.length; i++){
ints[i] = -1;
}
}
Part 2.
squish()函数,与smoosh功能相同,只不过要用链表来实现。size>2的检测是题目给的。
public void squish() {
// Fill in your solution here. (Ours is eleven lines long.)
SListNode currentNode = head;
while (size > 2 && currentNode.next != null){
if (currentNode.item.equals(currentNode.next.item)){
currentNode.next = currentNode.next.next;
} else {
currentNode = currentNode.next;
}
}
}
Part 3.
twin()函数,目的是将数字出现的频率x2.同样用链表实现。SListNode有两个constructor,刚好其中一个可以在新建node的时候直接赋予item和next,思路与part2相似。
public void twin() {
// Fill in your solution here. (Ours is seven lines long.)
SListNode current = head;
while (current != null){
current.next = new SListNode(current.item,current.next);
current = current.next.next;
}
}