輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。
1、基本實現:
如果不考慮時間複雜度,最簡單的思路應該是從頭掃描這個陣列,每碰到一個偶數時,拿出這個數字,並把位於這個數字後面的所有的數字往前面挪動一位。挪完之後在陣列的末尾有一個空位,這時把該偶數放入這個空位。由於沒碰到一個偶數就需要移動O(n)個數字,因此總的時間複雜度是O(n2).
2、只完成基本功能的解法
題目要求把奇數放在陣列的前半部分,偶數放在陣列的後半部分,因此所有的奇數應該位於偶數的前面,也就是說我們在掃描這個陣列的時候,如果發現有偶數在奇數的前面,我們可以交換他們的數序,交換之後就符合要求了。
因此我們可以維護兩個指標,第一個指標初始化時指向陣列的第一個數字,它只向後移動;第二個指標初始化時指向陣列的最後一個數字,它指向前移動。在兩個指標相遇之前,第一個指標總是位於第二個指標的前面。如果第一個指標的數字是偶數,並且第二個指標指向的數字是奇數,我們就交換兩個數字。
相關推薦
輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分, 所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
/** * * 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分, * 所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 * * */ public class Solution { public stati
輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。
1、基本實現:如果不考慮時間複雜度,最簡單的思路應該是從頭掃描這個陣列,每碰到一個偶數時,拿出這個數字,並把位於這個數字後面的所有的數字往前面挪動一位。挪完之後在陣列的末尾有一個空位,這時把該偶數放入這個空位。由於沒碰到一個偶數就需要移動O(n)個數字,因此總的時間複雜度是O
劍指offer題目描述 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
牛客網劍指offer線上程式設計: 方法一:利用兩個指標,實現了是陣列奇數在前偶數在後,但通過不了測試用例,因為改變了奇數和奇數,偶數和偶數之間的相對位置 class Solution { public: void reOrderArray(vector<in
輸入一個整數陣列,實現一個函式, 來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分, 所有偶數位於陣列的後半部分。
調整陣列使奇數全部都位於偶數前面。 輸入一個整數陣列,實現一個函式, 來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分, 所有偶數位於陣列的後半部分。 我用冒泡實現了這個要求: #include <stdio.h> #include <window
調整陣列使奇數全部都位於偶數前面。 題目: 輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。
題目: 輸入一個整數陣列,實現一個函式,來調整該陣列中數字的順序使得陣列中所有的奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。 #include <stdio.h> #includ
使用main函式的引數,實現一個整數計算器
使用main函式的引數,實現一個簡單的整數計算器,具有整數加,減,乘,除運算的功能。 首先,我們先來看一下main函式引數是什麼。 main函式有兩種形式: 1. int main(i
寫一個函式,實現一個整形有序陣列的二分查詢
程式程式碼: #include <stdio.h> #include <windows.h> int binary_search(int arr[], int num, int
利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法:# 測試: if trim('hello ') != 'hello': print('測試失敗!') elif trim(' hello'
def trim(s): k = 0 '''while迴圈判斷輸入字串是否為空值''' while k < len(s): if s[k] == ' ': #如果是空字元則記錄字元的個數 k = k + 1 #k自增來記錄數值
利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法:
1,首先判斷字串是否是空,如果是直接返回字串; 2,迴圈判斷字串從第一個開始是否是空格,如果是則去掉空格,每次去掉空格後判斷剩下的是否是空,如果是返回字串 3,迴圈判斷字串從最後一個開始往前是否是空格,如果是則去掉空格,每次去掉空格後判斷剩下的是否是空,如果是返回字串 4,空格都去掉後返
利用切片操作,實現一個trim()函式,去除字串首尾的空格
非遞迴的方法: def trim(s): while(s[:1]==' '): s=s[1:] while(s[-1:]==' '): s=s[:-1] return s 遞迴的方法: def trim(s): if len(
有一個二叉樹,現在懷疑它有一個結點有2個父節點,請寫出一個函式來判斷該二叉樹是否存在一個節點含有2個父節點。如果存在,返回true,否則返回false。
可以這樣,要檢測一個結點是否有兩個父親時,先把從該結點開始的結點與原樹分離,分成兩部分,然後再從原樹再查詢該結點,如果找到那就是有兩個結點,如果沒有則遞迴查詢。</span> struct Node{ Node *pLeft; Node *pRight; int
python3:利用切片操作,實現一個trim()函式,去除字串首尾的空格
利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法: 解決該題的思路如下: 1、判斷是否是空字串; 2、迴圈判斷字串首部第一個元素是否有空格,如果有,則去掉,再判斷是否是空字串,如果是,直接輸出; 3、迴圈判斷字串尾部
【廖雪峰 python教程 課後題 切片】利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法:
#encoding:utf-8 #定義一個函式,用來去除字串首尾的空格 def trim(s): '''首先判斷該字串是否為空,如果為空,就返回該字串, 如果不為空的話,就判斷字串首尾字元是否為空, 如果為空,就使用遞迴再次呼叫該函式trim(),否
學習筆記之Python 切片:利用切片操作,實現一個trim()函式,去除字串首尾的空格
需求: Python 切片:利用切片操作,實現一個trim()函式,去除字串首尾的空格,不呼叫str的strip()方法。# Basic Version: def trim(s): length = len(s) if length > 0:
利用切片操作,實現一個trim()函數,去除字符串首尾的空格,註意不要調用str的strip()方法:
調用 字符 去除 nbsp from urn return ret code 首先判斷字符串的長度是否為0,如果是,直接返回字符串 第二,循環判斷字符串的首部是否有空格,如果有,去掉空格,再判斷字符串的長度是否為0,如果是,直接返回字符串 第三,循環判斷字符串的尾部是否
[PHP] 算法-將一個字符串轉換成一個整數的PHP實現
empty 當前位置 value 實現 包含 symbol 不能 res 整型 題目描述 將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值為0或者字符
給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數
目標 for循環 答案 [] 遍歷 一個 class tar 利用 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。示例:給定 nums = [2, 7, 11, 15], targ
深入Vue實現原理,實現一個響應式框架
歡迎大家訪問我的個人網站 - Sunday俱樂部 在前面的章節中我們已經學習了Vue.js的基礎內容並且瞭解了Vue.js的原始碼實現,包括:Vue的生命週期、Vue的資料響應、Vue的渲染流程等等,在這一章節我們會和大家一起去實現一個響應式的框架 – MVue,MVue 會遵
【laravel】 複雜表單請求驗證類,實現一個類對應多個表單
一、序言 laravel 中提供了兩種驗證請求資料的方法,第一種方法適用於簡單的驗證,表單驗證和業務邏輯放在一起,顯得業務程式碼臃腫,而且重複的驗證規則基本也是複製貼上,程式碼也不好看,這是關鍵。本篇教程就不說這個了,需要了解的請戳這裡。第二種就是建立請求驗證類,下面就詳細說
使用tensorflow搭建一個神經網路,實現一個分類問題
工欲善其事必先利其器,首先,我們來說說關於環境搭建的問題。 安裝的方法有一萬種,但是我還是推薦下面這種安裝方法,簡單方便,不會出現很多莫名其妙的問題。 Anaconda + Jupyter + tensorflow 安裝的具體流程見下面的視訊連結: https://www.youtube.com/watc