6、第三大的數
給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。
示例 1:
輸入: [3, 2, 1]
輸出: 1
解釋:第三大的數是 1.
示例 2:
輸入: [1, 2]
輸出: 2
解釋:第三大的數不存在, 所以返回最大的數 2 .
示例 3:
輸入: [2, 2, 3, 1]
輸出: 1
解釋:注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。
//暴力求解
intthirdmax
(int
* nums,
int numssize)
} secend = first;
third = first;
//遍歷第二遍找第二大的數
for(i =
0; i < numssize; i++)}
//如果沒有第二大得數返回最大的數
if(secend == first)
//再遍歷一遍找到第三大的數
for(i =
0; i < numssize; i++)}
return third;
}
//快速排序
intcmp
(void
* a,
void
* b)
// 非遞增
intthirdmax
(int
* nums,
int numssize)
}// 3. 查詢
return j<
2?nums[0]
:nums[2]
;}
7、最大連續1的個數
給定乙個二進位制陣列, 計算其中最大連續1的個數。
示例 1:
輸入: [1,1,0,1,1,1]
輸出: 3
解釋:開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.
注意:
輸入的陣列只包含 0 和1。
輸入陣列的長度是正整數,且不超過 10,000。
int
findmaxconsecutiveones
(int
* nums,
int numssize)
else
} max_count=max_count>count?max_count:count;
return max_count;
}
8、三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。
int
cmp(
const
void
*a,const
void
*b)int
maximumproduct
(int
* nums,
int numssize)
9、尋找陣列的中心索引
做法:(暴力求解/首尾指標)
給定乙個整數型別的陣列 nums,請編寫乙個能夠返回陣列「中心索引」的方法。
我們是這樣定義陣列中心索引的:陣列中心索引的左側所有元素相加的和等於右側所有元素相加的和。
如果陣列不存在中心索引,那麼我們應該返回 -1。如果陣列有多個中心索引,那麼我們應該返回最靠近左邊的那乙個。
示例 1:
輸入:nums = [1, 7, 3, 6, 5, 6]
輸出: 3
解釋:索引3 (nums[3] = 6) 的左側數之和(1 + 7 + 3 = 11),與右側數之和(5 + 6 = 11)相等。
同時, 3 也是第乙個符合要求的中心索引。
示例 2:
輸入:nums = [1, 2, 3]
輸出: -1
解釋:陣列中不存在滿足此條件的中心索引。
說明:
nums 的長度範圍為 [0, 10000]。
任何乙個 nums[i] 將會是乙個範圍在 [-1000, 1000]的整數。
int
pivotindex
(int
* nums,
int numssize)
return-1
;}
10、至少是其他數字兩倍的最大數
在乙個給定的陣列nums中,總是存在乙個最大元素 。
查詢陣列中的最大元素是否至少是陣列中每個其他數字的兩倍。
如果是,則返回最大元素的索引,否則返回-1。
示例 1:
輸入: nums = [3, 6, 1, 0]
輸出: 1
解釋:6是最大的整數, 對於陣列中的其他整數,
6大於陣列中其他元素的兩倍。6的索引是1, 所以我們返回1.
示例 2:
輸入: nums = [1, 2, 3, 4]
輸出: -1
解釋:4沒有超過3的兩倍大, 所以我們返回 -1.
nums 的長度範圍在[1, 50].
每個 nums[i] 的整數範圍在 [0, 100].
int
dominantindex
(int
* nums,
int numssize)
}int num=0;
for(
int i=
0;i)++num;
}for
(int i=
0;iif(max>=max2*2)
else
return-1
;}
//排序法
struct num
;int
cmp(
const
void
* a,
const
void
* b)
intdominantindex
(int
* nums,
int numssize)
qsort
(records,numssize,
sizeof
(struct num)
,cmp);if
(records[numssize-1]
.value>=records[numssize-2]
.value*2)
else
return-1
;}
C語言初級 練習(三)
11 字母數字混合排序 吉位元2018秋 輸入一串字元,包含數字 0 9 和小寫字母 az 要求按數字從小到大,字母從a到z排序,和所有數字排在字母後面 輸入描述 一串字元 輸出描述 按規則排序的一串字元 示例1 輸入a31bz 輸出abz13 include include include int...
c語言初級
個人是乙個菜鳥,受到影響,來一篇c語言基礎 眾所周知,c語言在如今的社會,對一些工程是很有幫助的,在下哪,雖然是個土八路,就是那種自己學的,我發現這種東西必須深入下去,你才會有飯吃,學習一門技術難度係數是很大的,這不是吹牛,我哪,最喜歡的不是別的,而是專注,我以前不知道,所以學的雜亂無章,現在我覺得...
C語言日常練習(二)
1 將乙個正整數分解質因數。例如 輸入90,列印出90 233 5。思考 假設輸入乙個數n,先找到n以內所有的質數,2 3 5 7 用n最小的質數存在兩種情況 一 可以整除 那麼這個質數就是n的乙個質因數,記作i,用 n i 作為新的 n 的值,重複之前過程 二 不能整除 用下乙個質數再次嘗試,此時...