首页 > 其他分享 >2022-8-31 每日一题-栈模拟-剑指offer-二分查找

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

时间:2022-08-31 12:55:31浏览次数:88  
标签: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
From: https://www.cnblogs.com/benbicao/p/16642711.html

相关文章

  • [LeetCode] 1315. Sum of Nodes with Even-Valued Grandparent 祖父节点值为偶数的节
    Giventhe root ofabinarytree,return thesumofvaluesofnodeswithan even-valuedgrandparent.Iftherearenonodeswithan even-valuedgrandparent......
  • P3195 [HNOI2008]玩具装箱
    给定序列\(C\),将原序列拆成几个部分,每个部分\([i,j]\)费用为\(j-i+\sum^{j}_{k=i}C_k\),最小化费用。\(n\leq5\times10^4\)。定义\(sum[i]\)为前\(i\)项的......
  • C20220801T2 marisa
    考场上写挂这一道题,白给。(数组开小+随机化次数太少)没想到评测机这么给力,直接随机化\(2\times10^5\)个点,只要有一个在所有带状区域之外就没有覆盖,否则可以视为覆盖,这里......
  • C20220805T3 零和
    当构造出长度为22的随机\([1,5]\)的集合后,出现合法方案的概率很大,所以可以先随便构造一种方案,然后再通过背包求出其他取值中可以满足的方案数(即先构造22个极小的整数,去找......
  • C20220805T2 赌徒
    设手中硬币的大小为\(a\)和\(b\),对手硬币的两面是\(a_i\)和\(b_i\),那么单次游戏的收益就是\[\frac{1}{4}x_i(f(a,a_i)+f(a,b_i)+f(b,a_i)+f(b,b_i))\]其中\(f(x......
  • C20220806T1 暴力计算
    给定一张图,按照边权走,求总边权达到\(M\)时用的最短长度。\(n\leq100,M\leq10^{18}\)。首先可以用\(dp[i][j][k]\)表示从\(i\)出发通过\(2^k\)步走到\(j\)......
  • C20220806T3 如何愉快地与方格玩耍
    给定\(n\timesn\)的黑白方格,期初所有颜色均为白色,支持以下操作翻转\([l,r]\)行/列的颜色翻转质数/合数行/列的颜色求\([l1,r1]\)行、\([l2,r2]\)列围成的区......
  • C20220806T2 枚举计算
    有\(n\)个点,求从1号点到\(n\)号点的最短路径,但有某些点有前驱,必须先到了前驱才能到达这个点,允许有多个点同时出发。\(n\leq3000,m\leq30000\)。一看,这不是最短路......
  • C20220725T2 运动
    给定序列\(s\),求满足\(max\{s_{i,j}\}-min\{s_{i,j}\}\leqk\)的最大长度\(j-i\)。\(n\leq3\times10^6\)。(时限3s)没想到\(O(n\,log\,n)\)没有被卡掉。首先判......
  • C20220725T3 回文
    给定字符串\(s\),求\(s_{l,r}\)中回文串个数。多组询问,\(|s|\leq5000\),\(T\leq10^5\)。首先介绍\(O(n\timesT)\)的离谱做法(竟然没卡掉),先跑\(Manachar\),然......