18 删除链表的节点
class Solution {
public ListNode deleteNode(ListNode head, int val) {
//非空验证
if(head==null){
return null;
}
if(head.val==val){
//如果要删除的是头指针,直接命令head指向下一个节点
head=head.next;
return head;
}
//既然删除的不是头指针,那么头指针不应该移动,定义一个辅助指针
ListNode p = head;
//判断辅助指针的下一个节点是否为空
while(p.next!=null){
if(p.next.val==val){
p.next=p.next.next;
return head;
}
p=p.next;
}
return head;
}
}
21 调整数组顺序使奇数位位于偶数位前面
class Solution {
public int[] exchange(int[] nums) {
int r=0,l=nums.length-1,tmp;
while(r<l){
while(r<l&&(nums[r]&1)==1) r++;
while(r<l&&(nums[l]&1)==0) l--;
tmp=nums[r];
nums[r]=nums[l];
nums[l]=tmp;
}
return nums;
}
}
22 链表中倒数第k个节点
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode former =head,latter=head;
for(int i=0;i<k;i++){
former=former.next;
}
while(former!=null){
former=former.next;
latter=latter.next;
}
return latter;
}
}
24 翻转链表
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur=head,pre=null;
while(cur!=null){
ListNode temp = cur.next;
cur.next=pre;
pre=cur;
cur=temp;
}
return pre;
}
}
25 合并两个排序链表
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dum=new ListNode(0),cur=dum;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
cur.next=l1;
l1=l1.next;
}else{
cur.next=l2;
l2=l2.next;
}
cur=cur.next;
}
cur.next=l1!=null?l1:l2;
return dum.next;
}
}