第二次尝试结果:成功
第二次过程如下

#include <stdio.h>void Bub_Sort(int* head, int low, int high, int Bool) {//多次交换int temp; //交换int temp1; //优化for(int i = low; i < high; i++) {temp1 = high-(i-low);for(int j = low+1; j <= temp1; j++) {//使得head[j]始终为最值//Bool等于1为递增序列,Bool不等于1为递减序列if((head[j] < head[j-1]) == Bool) {temp = head[j];head[j] = head[j-1];head[j-1] = temp;}}}
}int Seekaim(int* nums, int aim, int left, int right) {//在[l,r]搜寻aim的位置,-1:不存在if(nums[left] <= aim && aim <= nums[right]) {while(left < right) {if(nums[(left+right)/2] < aim) {left = (left+right)/2+1;}else {right = (left+right)/2;}}}return nums[left] == aim?left: -1;
}void threeSum(int* nums, int numsSize) {Bub_Sort(nums, 0, numsSize-1, 1); //进行顺序排序int last = 0; //搜索下界int base_seek;//搜寻子基址int seek; //搜寻子int last_negative_seek =last+2; //上一个负搜寻子int last_positive_seek = numsSize-1; //上一个正搜寻子int flag; //1:搜寻子seek为目标值,0:搜寻子seek不为目标值int temp;while(nums[last]<=0 && (numsSize-1)-last>=2){base_seek=last+1;flag=0;while(!flag && base_seek<=numsSize-2){temp=nums[last]+nums[base_seek];if(temp>=0){//目标值为非正数,在[last+2,最后一个非正数]进行搜索seek=last_negative_seek;if(nums[seek]+temp>=0){//在[last+2,last_negative_seek]进行搜索for(seek;seek>last+1;seek--){//if(nums[seek]>0) break;if(nums[seek]+temp==0){flag=1;break;}}}else{//在[last_negative_seek+1,最后一个非正数]进行搜索seek++;while(seek<numsSize-1 && nums[seek]<=0){if(nums[seek]+temp==0){flag=1;break;}seek++;}}if(flag){last_negative_seek=seek;printf("%d %d %d\n",nums[last],nums[base_seek],nums[seek]);}else{if(last_negative_seek-last<2){last_negative_seek=last+2;}}}else{//目标值为正数,在[第一个正数,numsSize-1]进行搜索seek=last_positive_seek;if(nums[seek]+temp>=0){//在[第一个正数,last_positive_seek]进行搜索while(seek>last+1 && nums[seek]>0){if(nums[seek]+temp==0){flag=1;break;}seek--;}}else{//在[last_positive_seek+1,numsSize-1]进行搜索seek++;for(seek;seek<numsSize;seek++){//if(nums[seek]j<=0) break;if(nums[seek]+temp==0){flag=1;break;}seek++;}}if(flag){last_positive_seek=seek;printf("%d %d %d\n",nums[last],nums[base_seek],nums[seek]);}}base_seek++;}last++;}
}int main() {int nums[15] = {7,7,7, 5, 3, 0, 0, 0, -1, 4, -6, -7, 2, -4, 2};threeSum(nums, sizeof(nums)/sizeof(nums[0]));return 0;
}

Leetcode题库 15.三数之和_1(双指针 C实现)相关推荐

  1. Leetcode题库 15.三数之和_0(双指针 C实现)

    第二次尝试结果:成功 第二次成果链接:三数之和 第一次尝试结果:失败 第一次过程如下 #include <stdio.h>void Bub_Sort(int* head, int low, ...

  2. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  3. 【LeetCode 算法】15.三数之和

    15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...

  4. LeetCode 15. 三数之和【双指针】

    15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...

  5. [ 热题 HOT 100] ---15.三数之和---排序+双指针

    1 题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...

  6. 【LeetCode笔记】15.三数之和(JAVA、双指针)

    文章目录 题目描述 代码 & 解题思路 二刷更新 题目描述 主要是解决重复的问题:如何去除重复解.在有大量重复解的情况下如何让算法跑得更快 代码 & 解题思路 先排序,按照大小顺序来做 ...

  7. 15. 三数之和(双指针)

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 注意:答案中不可以包含重复的三 ...

  8. Leetcode python《热题 HOT 100》15. 三数之和

    Leetcode python 之 <热题 HOT 100>:https://leetcode-cn.com/problemset/hot-100/ 15. 三数之和 给定一个包含 n 个 ...

  9. 【leetcode刷题】21.三数之和——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡. --leetcode此题热评 前言 哈喽,大家好,我是一条. ...

最新文章

  1. HTML自学教程--一天搞定HTML(总结)
  2. Word无法使用超链接,提示:“由于本机的限制...”
  3. 用html制作篮球网页,篮球网站的设计与实现).doc
  4. fck java_FCkjava三种调用方法
  5. php 腾讯云 文字识别_腾讯科技(成都)有限公司
  6. linux第三方模块参数,nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)...
  7. 如果奇迹有颜色,那么一定是暴力or模拟比较6
  8. spring源码解析(一)---占位符解析替换
  9. Javascript中的!-- //--
  10. 3D点云重建0-10:MVSNet-源码解析(6)-Depth Map Refinement以及Loss讲解
  11. Python实现CarMaker TestRun的泛化
  12. “一寺一墓”的典型格局
  13. 【滤波器】基于多种滤波器实现信号去噪含Matlab源码
  14. 谈谈自信,为什么自信是成功的第一秘诀?
  15. 不足200行代码,我用python写了一个上课点名系统。还没开学的你们慌了吗?
  16. C++ 产生0-1之间的随机数
  17. uc浏览器设置里面的的浏览器ua是什么意思
  18. java实现顺时针螺旋填入
  19. blgo ? 博客 !
  20. 续写千倍币神话,PlusFo到底是何方神圣?

热门文章

  1. MS-SQL中的事务
  2. 创建数据库连接字符串的快截方法
  3. 对DotNet分布式应用搭建的考虑(引用)
  4. Day11多态部分-1 【1.1 多态的体现】
  5. 程序人生:无他,唯心向尔
  6. 【数据结构与算法】之深入解析“颜色分类”的求解思路与算法示例
  7. Swift之SwiftUI自定义star rating评分组件
  8. 【网络通信与信息安全】之深入解析TCP连接中如何确定客户端的端口号
  9. Python到底是个什么东西
  10. 30秒实现Vue吸顶效果