leetCode
- 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15class Solution {
/**
* @param Integer[] $nums
* @return Integer
*/
function singleNumber($nums) {
$arr = [];
foreach($nums as $key => $val){
$arr[$val] += 1;
}
return array_search(1,$arr);
}
} - 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class Solution {
/**
* @param Integer[] $nums
* @return Integer
*/
function majorityElement($nums) {
$length = count($nums);
$result = [];
foreach($nums as $val){
if(array_key_exists($val,$result)){
$result[$val]++;
} else {
$result[$val] = 1;
}
}
foreach($result as $k=>$v){
if($v > $length/2){
return $k;
}
}
}
} - 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列,每列的元素从上到下升序排。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class Solution {
/**
* @param Integer[][] $matrix
* @param Integer $target
* @return Boolean
*/
function searchMatrix($matrix, $target) {
$total = count($matrix) - 1;//行
$line = 0;
while(true){
if (!isset($matrix[$total][$line])) return false;
if ($matrix[$total][$line] == $target){
return true;
}elseif($matrix[$total][$line] < $target){
$line++;
} else {
$total--;
}
}
return false;
}
}
Comments