当前位置: 首页 > news >正文

编程导航算法村 第五关 | 白银挑战

编程导航算法村 第五关 | 白银挑战

用栈实现队列

LeetCode 232题

class MyQueue {private Stack<Integer> stack; // 保存private Stack<Integer> tempstack; // 临沭队列public MyQueue() {stack = new Stack<>();tempstack = new Stack<>();}public void push(int x) {stack.push(x);}public int pop() {
//        如果栈是空,返回if (stack.isEmpty()) {return -1;}while (!stack.isEmpty()) {tempstack.push(stack.pop());}int pop = tempstack.pop();//while (!tempstack.isEmpty()){stack.push(tempstack.pop());}return pop;}public int peek() {//        如果栈是空,返回if (stack.isEmpty()) {return -1;}while (!stack.isEmpty()) {tempstack.push(stack.pop());}int peek = tempstack.peek();//while (!tempstack.isEmpty()) {stack.push(tempstack.pop());}return peek;}public boolean empty() {return stack.isEmpty();}}

用队列实现栈

  • 实现的关键在于,inqueue是真实存储元素的队列,outqueue是辅助队列
  • 当执行插入操作时,我们将新插入的元素要置于队列的队头,这样子我们才能直接进行删除与获取队头元素
class MyStack {private Queue<Integer> inqueue;private Queue<Integer> outqueue;public MyStack() {inqueue = new LinkedList<>();outqueue = new LinkedList<>();}public void push(int x) {outqueue.offer(x);while (!inqueue.isEmpty()) {outqueue.add(inqueue.poll());}Queue<Integer> temp = inqueue;inqueue = outqueue;outqueue = temp;}public int pop() {return inqueue.poll();}public int top() {return inqueue.peek();}public boolean empty() {return inqueue.isEmpty();}
}

三数之和

  • 使用排序+双指针法
  • 首先确定第一个数,然后使用双指针法,直到找到两数之和==nums[first]
class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums); // 进行排序ArrayList<List<Integer>> resultList = new ArrayList<List<Integer>>();for (int i = 0; i < nums.length - 2; i++) {int one = nums[i];
//            避免重复值的发生if (i != 0) {if (nums[i] - nums[i - 1] == 0)continue;}
//            使用双指针法int left = i + 1;int right = nums.length - 1;int result = 0 - one;
//for (left=i+1;left<right;left++){if (left>i+1 && nums[left]==nums[left-1]){continue;}while (left < right && nums[left] + nums[right] > result) {right--;}if (left == right) {break;}if (nums[left] + nums[right] == result) {List<Integer> list = new ArrayList<Integer>();list.add(nums[left]);list.add(nums[right]);list.add(nums[i]);resultList.add(list);}}//}return resultList;}
}
http://www.lryc.cn/news/97351.html

相关文章:

  • (十六十七)时序数据库是怎么存储用户名和密码的从InfluxDB OSS迁移数据
  • 5分钟开发一个AI论文抓取和ChatGPT提炼应用
  • SK5代理与网络安全:保障爬虫隐匿性与HTTP连接稳定性
  • 基于4G网络的嵌入式设备远程升级系统设计与实现(学习一)
  • 陪诊小程序软件|陪诊系统定制|医院陪诊小程序
  • [数据集][目标检测]空中飞鸟目标检测数据集VOC格式4955张
  • 安徽现货黄金代理请看这篇
  • HTML JS实现点击按钮下载文件功能例子(C知道版)
  • 企业网络安全与数据保护合规建设 ——从合规运营到香港上市
  • antdv Select dropdownRender Input 不能输入的问题
  • PostgreSQL 查询json/jsonb是否存在某个片段
  • Spring 官方文档及相关资料的网址集合
  • hypery 十一、命令行
  • QT占位符 %n+arg()、QString的格式化arg(补零/进制转换)
  • 浙江大学第六周数据结构之06-图1 列出连通集
  • DNS缓存病毒防护43.227.220
  • Spring MVC -- 返回数据(静态页面+非静态页面+JSON对象+请求转发与请求重定向)
  • k8s集群部署(使用kubeadm部署工具进行快速部署,相关对应版本为docker20.10.0+k8s1.23.0)
  • SIP视频对讲sip广播网关
  • prometheus直方图实践
  • 【C语言进阶篇】指针都学完了吧!那回调函数的应用我不允许还有人不会!
  • 专注:如何提高专注力和注意力的简要指南
  • Linux查看内存的几种方法
  • selenium定位rect元素
  • uniapp <textarea>组件的踩坑
  • README.md 文档使用 treer 生成树形项目结构
  • 朝花夕拾思维导图怎么画?看看这种绘制方法
  • Python - OpenCV、OCR识别摄像头中的文字
  • 金融中的数学:贝叶斯公式
  • ClickHouse单节点安装配置