栈 队列 二叉树

本节内容以习题的形式呈现

   给定一个包含n个整数的数组nums,判断数组nums是否有a,b,c,使得a+b+c=0?找出所有满足条件且不重复的三元组。

例如,给定数组nums={-1,0,1,2,-1,-4};满足上述要求的三元组为
    [
            [ -1,0,1  ]
            [-1,-1,2  ]
    ]
public List<List<Integer>>threeSums(int[]nums)
  Arrays.sort(nums)        [-4,-1,-1,0,1,2]
                                   i j k
 i~[0,length-2]            nums[i]+nums[j]+nums[k]
  j=i+1;
  k=nums.length-1;         <0;j++;
   while(j<k)
{                          ==0;找到了一个结果
}                          >0    k--
    for(int i=0;i<nums.length-2;i++)
  {
    int j=i+1;
    int k=nums.length-1;
while(j<k)
{  .....}
while(i<nums.length-2&&nums[i]=nums[i+1]) 
{
   i++;
}
}
while(j<k&&nums[i]+nums[j]+nums[k]<0)
{
  j++;
}
  if(j>=k)
{
  break;
}
 if(nums[i]+nums[j]+nums[k]==0)
{
   List<Integer>e=new ArrayList<>();
  e.add(nums[i]);
  e.add(nums[j]);
  e.add(nums[k]);
result.add(e);
while(i<k&&nums[j]==nums[j+1])
{
  j++;
}
j++;
}
while(j<k&&nums[i]+nums[j}+nums[k]<0)
{
 k--;
}
if(j>k)
{
 break;
}
 if(nums[i]+nums[j]+nums[k]==0)
{
   List<Integer>e=new ArrayList<>();
  e.add(nums[i]);
  e.add(nums[j]);
  e.add(nums[k]);
  result.add(e);
while(j<k&&nums[k]==nums[k-1])
{
k--;
}
k--;
}          

1.括号匹配

  遍历字符串

  遇到左括号入栈

  遇到右括号  

          如果栈为空,说明右括号多了。 不匹配

         否则出栈  ,   左右括号不匹配  

如果栈内还有元素,说明左括号多了  不匹配。

否则匹配

 

2.用队列实现栈

3.用栈实现队列

4.最小栈

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值