Leetcode之3Sum
来源:互联网 发布:907工程数据 编辑:程序博客网 时间:2024/04/30 06:56
【题目】
给定n个整数的数组S,是否在 数组S中有元素a,b,C,使得A + B + C =0?在数组中找出独一无二的三元素组,使得他们之和为0。
注意:
在三元素组(A,B,C)中,必须满足非递减排序。 (即A≤B≤C)
该解决方案集中一定不能包含重复的三元素组。
【代码】
#include <stdio.h>#define N 20void swap(int array[],int low,int high){int temp; temp=array[low];array[low]=array[high];array[high]=temp;}void quicksort(int array[],int low,int high){int i=low,j=high;int pivot;int pivotkey;pivotkey=array[low];if(low<high){while(i<j){while(i<j&&array[j]>=pivotkey)j--;swap(array,i,j);while(i<j&&array[i]<=pivotkey)i++;swap(array,i,j);}pivot=i; quicksort(array,low,pivot-1); quicksort(array,pivot+1,high);}}int sum2(int array[],int size,int sum,int index1[],int index2[]){int i=0;int j=size-1;int k=0;while(i<j){if((array[i]+array[j])>sum){//注意,跳过重复的元素while(i<j&&array[j]==array[j-1]){ j--;}j--;}else {if((array[i]+array[j])<sum){//注意,跳过重复的元素while(i<j&&array[i]==array[i+1]){i++;}i++;}else{index1[k]=i; index2[k]=j;k++;//注意,跳过重复的元素while(i<j&&array[j]==array[j-1]){j--;}while(i<j&&array[i]==array[i+1]){i++;}i++;j--;}}}return k;}int sum3(int array[],int size,int t,int *index1,int *index2,int *index3){int i,j,s=0;for(i=0;i<size-2;i++){int result;result=sum2(array+i+1,size-i-1,t-array[i],index2,index3);if(result!=0){for(j=0;j<result;j++){*index1=i;index1++;*index2=*index2+i+1;*index3=*index3+i+1;index2++;index3++;}s=s+result;}while(array[i+1]==array[i])i++;}return s;}void main(){int a[6]={-2,0,0,2,2,0};int i;quicksort(a,0,5);for(i=0;i<6;i++)printf("%d ",a[i]);printf("\n");int index1[N],index2[N],index3[N];int result;result=sum3(a,6,0,index1,index2,index3);printf("%d\n",result);for(i=0;i<result;i++) printf("%d %d %d\n",a[index1[i]],a[index2[i]],a[index3[i]]);printf("\n");}
0 0
- Leetcode之3Sum
- leetcode之3Sum
- LeetCode之3Sum
- leetcode之3Sum
- leetCode之3Sum
- leetcode之3Sum Closest
- LeetCode之3Sum Closest
- 【Leetcode】之3sum问题
- 【Leetcode】之3Sum Closest
- leetcode之3Sum Closest
- leetcode之 3Sum Closest
- LeetCode之15----3Sum
- Leetcode解题之3Sum
- leetcode之3Sum问题
- 【Leetcode】3Sum (Sum)
- LeetCode进阶之路(3Sum)
- LeetCode进阶之路(3Sum Closest)
- LeetCode之路——3Sum
- opencv显示大图
- Android 如何安全的退出多个Activity
- SoC嵌入式软件架构设计之七:嵌入式文件系统设计
- iOS 常用的宏定义
- contentOffsize最大位置
- Leetcode之3Sum
- 向架构师进军--->系统架构设计基础知识
- android布局
- Java反射机制之数组的反射
- iOS开发之单元测试
- skype 无法更新安装
- 第一次使用TinyMce的手记
- SPRING FRAMEWORK 4.0 M2: WEBSOCKET MESSAGING ARCHITECTURES
- ZOJ-2658