场景:
刷题
问题描述:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
解法一:
将下一个点的值赋给这个节点,将后面的点删掉(有点不讲武德)
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}
运行结果
解法二:
下面的解法不是上面的题解 正常的思维:需要两个节点,一个指向要删除的前一个节点,删除要删除的节点
class ListNode1 {
int val;
ListNode1 next;
ListNode1(int x) {
val = x;
}
}
public static void main(String[] args) {
ListNode1 head=new ListNode1(4);
ListNode1 n1=new ListNode1(5);
ListNode1 n2=new ListNode1(1);
ListNode1 n3=new ListNode1(9);
head.next=n1;
n1.next=n2;
n2.next=n3;
System.out.println(deleteNode(head, 1).val);
}
public static ListNode1 deleteNode(ListNode1 head,int val) {
ListNode1 p=head;
ListNode1 temp;
while(p!=null) {
temp=p;
p=p.next;
if(p.val==val) {
temp.next=p.next;
return p;
}
}
return null;
}
|