搞定演算法 陣列的奇偶位置問題

2021-09-25 14:25:18 字數 644 閱讀 7769

一起交流秋招面試經驗,可獲得博主的秋招簡歷和複習筆記。 

題目:給定乙個整型陣列,請在原地調整這個陣列,保證要麼偶數字置上都是偶數,或者奇數字置上都是奇數。

要求:時間複雜度 o(n),額外空間複雜度 o(1)。

下面的**中,將最後乙個元素作為發貨點,根據自己值的奇偶性和當前陣列 odd 和 even 指標指向的元素進行交換,這樣不停的交換。最後如果有乙個指標越界了,那對應的規則就排在了對應的位置上了。

這個題目的**量不是很大,也沒有特殊的演算法,但是程式設計技巧確實很好。

public class eveninevenoddinodd 

int even = 0; // 指向偶數的位置

int odd = 1; // 指向奇數的位置

// 發貨點:每次把最後乙個數根據它是奇數還是偶數和前面對應奇偶指標上的數互換位置

int end = arr.length - 1;

while(odd < arr.length && even < arr.length)else}}

public static void swap(int arr, int i, int j)

}

演算法 陣列連乘問題

乙個程度為n的陣列,現在要令 a 0 a 1 a 2 a n 1 a 1 a 0 a 2 a n 1 a 2 a 0 a 1 a n 1 a n 1 a 0 a 2 a n 2 條件是不能用除法,時間複雜度必須是線性。觀察一下題目,每乙個元素 i 都被更新成了a 0 到a n 1 除去 i 下標元素...

玩轉演算法 陣列問題

陣列問題 排序 選擇排序 插入排序 歸併排序 快速排序 查詢 二分查詢法 資料結構 棧 佇列 堆 如何寫出正確的程式 明確變數的含義 迴圈不變數 小資料量除錯 大資料量測試 leetcode 283.move zeros問題 給定乙個陣列nums,寫乙個函式,將函式中所有的0挪到陣列的末尾,而維持其...

演算法 陣列指標問題

88.合併兩個有序陣列 給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 n...