IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【排序篇】【中等】leetcode第15题 三数之和 -> 正文阅读

[数据结构与算法]【排序篇】【中等】leetcode第15题 三数之和

//1.枚举
//2.先排序,再分情况。(该三元单位存在两种可能;两负一非负   一负两非负) 
// 注意到题目中不能重复的要点,而单纯枚举不好解决重复问题,故考虑用第二种思路
void merge(int A[],int n,int left,int right,int mid,int* L,int* R){
    int n1=mid-left;
    int n2=right-mid;
    for(int i=0;i<n1;i++)L[i]=A[left+i];
    for(int i=0;i<n2;i++)R[i]=A[mid+i];
     	
    L[n1+1]=R[n2+1]=1000000;
    int i=0,j=0;
    for(int k=left;k<right;k++){
     	if(L[i]<=R[j]){
     	    A[k]=L[i++];
		}
		else{
			A[k]=R[j++];
		}
    }
}
void mergesort(int A[],int n,int left,int right,int* L,int* R){
	if(left+1<right){
		int mid=(left+right)/2;
		mergesort(A,n,left,mid,L,R);
		mergesort(A,n,mid,right,L,R);
		merge(A,n,left,right,mid,L,R);
	}
}
//归并排序
 
int binarysearch(int A[],int key,int left,int right){
	int mid,flag=0;
	while(left<right){
        mid=(left+right)/2;
        if(A[mid]>key){
        	right=mid;
		}
		else if(A[mid]<key){
			left=mid;
		}
		else{
			flag=1;
		}
	}
	return flag;
}
//二分搜索

int n=0,cnt=0,num=0,j;
int* L=(int*)calloc(numsSize/2+2,sizeof(int)); 
int* R=(int*)calloc(numsSize/2+2,sizeof(int));
mergesort(nums,numsSize,0,numsSize,L,R);
while(nums[n++]<0){
	cnt++;
}

for(n=0;n<cnt;n++){
	for(j=n+1;j<cnt;j++){
		while(j>n+1&&nums[j]==nums[j-1]&&j<cnt){
			j++;
		}
		if(binarysearch(nums+cnt,abs(nums[n]+nums[j]),cnt,numsSize)){
			returnColumnSizes[num][0]=nums[n];
			returnColumnSizes[num][1]=nums[j];
			returnColumnSizes[num++][2]=abs(nums[n]+nums[j]);
		}
	}
	while(nums[n]==nums[++n]);
	n--;
}
free(L);
free(R);
return returnColumnSizes;

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:44:52  更:2021-10-23 12:46:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:24:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码