线性枚举
1464. 数组中两元素的最大乘积
题目链接:1464. 数组中两元素的最大乘积
int max(int a, int b) {
if (a > b)
return a;
else
return b;
}
int maxProduct(int* nums, int numsSize){
int i, j, answer;
answer = 0;
for (i = 0; i < numsSize; i++) {
for (j = i + 1; j < numsSize; j++) {
answer = max(answer, (nums[i] - 1) * (nums[j] - 1));
}
}
return answer;
}
485. 最大连续 1 的个数
题目链接:485. 最大连续 1 的个数
int max(int a, int b) {
if (a > b)
return a;
else
return b;
}
int findMaxConsecutiveOnes(int* nums, int numsSize){
int i, answer, count0;
answer = count0 = 0;
for (i = 0; i < numsSize; i++) {
if (nums[i] == 1) {
count0++;
} else {
answer = max(answer, count0);
count0 = 0;
}
}
return max(answer, count0);
}
153. 寻找旋转排序数组中的最小值
题目链接:153. 寻找旋转排序数组中的最小值
int min(int a, int b) {
if (a < b)
return a;
else
return b;
}
int findMin(int* nums, int numsSize){
int i, answer;
answer = 5010;
for (i = 0; i < numsSize; i++)
answer = min(answer, nums[i]);
return answer;
}
154. 寻找旋转排序数组中的最小值 II
int min(int a, int b) {
if (a < b)
return a;
else
return b;
}
int findMin(int* nums, int numsSize){
int i, answer;
answer = 5010;
for (i = 0; i < numsSize; i++)
answer = min(answer, nums[i]);
return answer;
}
628. 三个数的最大乘积
题目链接:628. 三个数的最大乘积
因为有正负数同时存在,所以两边不一定是最大值。
int cmp(const void *a, const void *b) {
int x, y;
x = *(int *)a, y = *(int *)b;
if (x < y) return -1;
else if (x > y) return 1;
else return 0;
}
int rcmp(const void *a, const void *b) {
return -cmp(a, b);
}
int max(int a, int b) {
if (a > b)
return a;
else
return b;
}
int maximumProduct(int* nums, int numsSize){
int i, answer;
qsort(nums, numsSize, sizeof(int), cmp);
answer = -1e9;
for (i = 2; i < numsSize; i++)
answer = max(answer, nums[0] * nums[1] * nums[i]);
for (i = numsSize - 3; i >= 0; i--)
answer = max(answer, nums[numsSize - 1] * nums[numsSize - 2] * nums[i]);
return answer;
}
2091. 从数组中移除最大值和最小值
题目链接:2091. 从数组中移除最大值和最小值
int min(int a, int b) {
if (a < b)
return a;
else
return b;
}
int minimumDeletions(int* nums, int numsSize){
int i, mx, lmx, rmx, mn, lmn, rmn, answer;
mx = 1e9;
for (i = 0; i < numsSize; i++)
if (nums[i] < mx)
mx = nums[i], lmx = i;
mx = 1e9;
for (i = numsSize - 1; i >= 0; i--)
if (nums[i] < mx)
mx = nums[i], rmx = i;
mn = -1e9;
for (i = 0; i < numsSize; i++)
if (nums[i] > mn)
mn = nums[i], lmn = i;
mn = -1e9;
for (i = numsSize - 1; i >= 0; i--)
if (nums[i] > mn)
mn = nums[i], rmn = i;
answer = numsSize;
if (lmx >= rmn)
answer = min(answer, min(lmx + 1, numsSize - rmn));
else
answer = min(answer, lmx + 1 + numsSize - rmn);
if (lmn >= rmx)
answer = min(answer, min(lmn + 1, numsSize - rmx));
else
answer = min(answer, lmn + 1 + numsSize - rmx);
return answer;
}
2656. K 个元素的最大和
题目链接:2656. K 个元素的最大和
int cmp(const void *a, const void *b) {
int x, y;
x = *(int *)a, y = *(int *)b;
if (x < y) return -1;
else if (x > y) return 1;
else return 0;
}
int maximizeSum(int* nums, int numsSize, int k){
int x, answer, i;
qsort(nums, numsSize, sizeof(int), cmp);
x = nums[numsSize - 1];
answer = 0;
for (i = 0; i < k; i++)
answer += x + i;
return answer;
}
LCP 06. 拿硬币
题目链接:LCP 06. 拿硬币
int minCount(int* coins, int coinsSize){
int count, i;
count = 0;
for (i = 0; i < coinsSize; i++)
count += (coins[i] + 1) / 2;
return count;
}
2057. 值相等的最小索引
题目链接:2057. 值相等的最小索引
int smallestEqual(int* nums, int numsSize){
int i, answer;
answer = -1;
for (i = numsSize - 1; i >= 0; i--)
if (i % 10 == nums[i])
answer = i;
return answer;
}
2149. 按符号重排数组
题目链接:2149. 按符号重排数组
int* rearrangeArray(int* nums, int numsSize, int* returnSize){
int *a;
int i, j, k;
a = (int *) malloc(numsSize * sizeof(int));
for (i = 0, j = 0, k = 0; i < numsSize; i++) {
while (j < numsSize && nums[j] < 0) j++;
while (k < numsSize && nums[k] > 0) k++;
if (i % 2 == 0) {
a[i] = nums[j++];
} else {
a[i] = nums[k++];
}
}
*returnSize = numsSize;
return a;
}
2125. 银行中的激光束数量
题目链接:2125. 银行中的激光束数量
class Solution {
public int numberOfBeams(String[] bank) {
int answer = 0, last = 0;
for (int i = 0; i < bank.length; i++) {
int now = 0;
for (int j = 0; j < bank[i].length(); j++) {
if (bank[i].charAt(j) == '1') {
now += 1;
}
}
if (now == 0) {
continue;
}
answer += last * now;
last = now;
}
return answer;
}
}