C语言刷数组题记录
讲解:https://mp.weixin.qq.com/s/weyitJcVHBgFtSc19cbPdw
二分法:
704. 二分查找
int search(int* nums, int numsSize, int target) { int left = 0; int right = numsSize; while (left < right) { // int cur = (left + right) / 2; int cur = left + (right - left) / 2; if (nums[cur] == target) { return cur; } else if (nums[cur] > target) { right = cur; } else { left = cur + 1; } } return -1; }
27. 移除元素
暴力法(两层for循环)和 双指针
int removeElement(int* nums, int numsSize, int val) { for (int i = 0; i < numsSize; i++) { if (nums[i] == val) { // 数组整体向前移一步 for (int j = i; j < numsSize - 1; j++) { nums[j] = nums[j + 1]; } numsSize--; i--; } } return numsSize; }
双指针(快慢指针)
int removeElement(int* nums, int numsSize, int val) { int slow = 0; for (int fast = 0; fast < numsSize; fast++) { if (nums[fast] != val) { nums[slow++] = nums[fast]; } } return slow; }
977. 有序数组的平方
/** * Note: The returned array must be malloced, assume caller calls free(). */ int Double(int a) { return a * a; } int* sortedSquares(int* nums, int numsSize, int* returnSize) { int left = 0; int right = numsSize - 1; int index = right; *returnSize = numsSize; int *res = (int *)malloc(sizeof(int) * numsSize); while (left <= right) { if (Double(nums[left]) <= Double(nums[right])) { printf("1 %d <= %d index=%d\n", Double(nums[left]), Double(nums[right]), index); res[index--] = Double(nums[right]); right--; } else { printf("2 %d > %d index=%d\n", Double(nums[left]), Double(nums[right]), index); res[index--] = Double(nums[left]); left++; } } return res; }
209. 长度最小的子数组
滑动窗口
int minSubArrayLen(int target, int* nums, int numsSize) { int slow = 0; int fast = 0; int sum = 0; int res = 1e7; for (int fast = 0; fast < numsSize; fast++) { sum += nums[fast]; while (sum >= target) { int len = fast - slow + 1; res = res < len ? res : len; // sum = 0; 这是不对的! printf("slow:%d\n", slow); sum -= nums[slow++]; } } return res == 1e7 ? 0 : res; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)