ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-8-31 每日一题-栈模拟-剑指offer-二分查找

2022-08-31 13:01:18  阅读:182  来源: 互联网

标签:index popped offer int 31 nums pushed 2022 stack


946. 验证栈序列

难度中等

给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

 1 class Solution {
 2     public boolean validateStackSequences(int[] pushed, int[] popped) {
 3         Deque<Integer> stack=new ArrayDeque<>();
 4         int index=0;
 5         for (int x:pushed){
 6             stack.push(x);
 7             while (!stack.isEmpty()&&stack.peek()==popped[index]){
 8                 stack.pop();
 9                 index++;
10             }
11         }
12         return stack.isEmpty();
13     }
14 }

思路:用栈模拟,检测看对不对。

剑指 Offer II 070. 排序数组中只出现一次的数字

难度中等

给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。

你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。

 1 class Solution {
 2     public int singleNonDuplicate(int[] nums) {
 3         int l=0,r=nums.length-1;
 4         while (l<r){
 5             int mid=(l+r)/2;
 6             if (mid==0||mid==nums.length) return nums[mid];
 7             if (mid%2==0){
 8                 if (nums[mid]==nums[mid-1]) r=mid-1;
 9                 else if (nums[mid]==nums[mid+1]) l=mid+1;
10                 else return nums[mid];
11             }else{
12                 if (nums[mid]==nums[mid-1]) l=mid+1;
13                 else if (nums[mid]==nums[mid+1]) r=mid-1;
14             }
15         }
16         return nums[l];
17     }
18 }

思路:二分查找的变种思路。

标签:index,popped,offer,int,31,nums,pushed,2022,stack
来源: https://www.cnblogs.com/benbicao/p/16642711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有