小白的LeetCode日記記錄Day3

EchoTio發表於2020-12-31

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;
    }

相關文章