小白的LeetCode日记记录Day3

11.删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

解法:首先考虑特殊情况,如果头结点为要删除的值就直接返回头结点下一个节点。否则创建两个指针,pre和cur,pre代表当前节点的上一个节点,cur代表当前节点。之后运用循环找到该节点,删除该节点

pre.next = cur.next

最后返回头结点

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        if(head.val==val)
            return head.next;
        ListNode pre=head,cur=head.next;
        while(cur!=null&&cur.val!=val){
            pre = cur;
            cur = cur.next;
        }
        if(cur!=null){
            pre.next = cur.next;
        }
        return head;
    }
}

12.调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

解法:准备两个指针left和right,left在最左边,right在最右边,left从左往右找到偶数停下,right从右往左找到奇数停下,之后进行交换,循环此过程最后输出数组。

class Solution {
    public int[] exchange(int[] nums) {
        int left=0,right=nums.length-1,temp;
        while(left<right){
            while(left<right&&nums[left]%2==1){
                left++;
            }
            while(left<right&&nums[right]%2==0){
                right--;
            }
            temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
        }
        return nums;
    }
上一篇:Python学习Day3-time库、基本数据类型与字符操作


下一篇:day3