讲解: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. 移除元素

https://mp.weixin.qq.com/s?__biz=MzUxNjY5NTYxNA==&mid=2247484304&idx=1&sn=ad2e11d171f74ad772fd23b10142e3f3&scene=21#wechat_redirect

暴力法(两层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;
}

最新文章

  1. oracle ORA-00911 问题 解决
  2. IOS开发UI基础 UIAlertView的属性
  3. MFC CString的L和_T
  4. 使用docker-hub
  5. NodeJS文件读取:感恩常在--抓把糖果,愉悦客人
  6. 在 Windows 8 或 8.1 上安装 .NET Framework 3.5 安装错误:0x800f0906、0x800F081F
  7. 提高C#编程水平不可不读的50个要诀
  8. 支付宝APP支付Java回调具体步骤
  9. IE 弹出&quot;Unable to do xml/xsl&quot; Processing
  10. mvcc摘抄
  11. cf D. Alternating Current
  12. “聊天剽窃手”--ptrace进程注入型病毒
  13. python基础(三)编码,深浅copy
  14. APP案例分析
  15. js分享功能(微信,QQ,微博,空间,豆瓣等)
  16. CentOS 7安装mysql(rpm)
  17. OmniPlan 3 Pro密钥
  18. linux下zip文件解压乱码的问题
  19. JavaScript 覆盖document.createElement 方法
  20. python程序设计——面向对象程序设计:属性

热门文章

  1. 日志模块详细介绍 hashlib模块 动态加盐
  2. 【故障公告】数据库服务器 CPU 100% 引发全站故障
  3. python基础详解
  4. JavaScripts之迪卡算法求积(n*n)适用于SKU信息计算等场景
  5. 人工智能与智能系统2-&gt; 机器人学2 | 时间与运动
  6. 微信h5下拉隐藏网页,还有取消页面滑动
  7. vi/vim 设置.vimrc(/etc/vim | $HOME)
  8. UTF-8编码规则(摘自JDK官方文档)
  9. redis lua脚本学习
  10. Endnote