# Array# Simple Math# Conditional Logic

k026 - 中位數

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算已排序整數陣列的中位數。如果陣列長度為奇數,則中位數是陣列中間的元素。如果陣列長度為偶數,則中位數是中間兩個元素的平均值。

解題思路

由於輸入的陣列已經排序,因此可以直接根據陣列長度的奇偶性來計算中位數。如果長度為奇數,則直接讀取中間位置的元素即可。如果長度為偶數,則讀取中間位置的前一個元素,再讀取陣列長度,然後計算這兩個元素的平均值。

複雜度分析

  • 時間複雜度: O(n)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int n,x;
int main(){
	cin >> n;
	if(n%2){
		for(int i=0;i<=n/2;++i){
			cin >> x;
		}
		cout << x;
	}
	else{
		for(int i=0;i<n/2;++i){
			cin >> x;
		}
		cin >> n;
		cout << (x+n)/2;
	}
}

Discussion