首页 > 编程语言 >算法总结

算法总结

时间:2022-08-17 23:27:50浏览次数:63  
标签:总结 Deque int util 算法 import public 小行星

继续字符串的算法题:

package com.chenghaixiang.jianzhi2.day12;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office036 {
}
//后缀表达式由波兰的逻辑学家卢卡西维兹提出,也称逆波兰表达式。后缀表达式的特点是:没有括号,运算符总是放在和它相关的操作数之后。
//根据 逆波兰表示法,求该后缀表达式的计算结果。
//
//有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> stack=new LinkedList<>();
        int n=tokens.length;
        for(int i=0;i<n;i++){
            String token=tokens[i];
            if(isNumber(token)){
                stack.push(Integer.parseInt(token));
            }else {
                //弹出数字
                int num2=stack.pop();
                int num1=stack.pop();
                switch (token){
                    case "+":
                        //计算结果压入栈
                        stack.push(num1+num2);
                        break;
                    case "-":
                        stack.push(num1-num2);
                        break;
                    case "*":
                        stack.push(num1*num2);
                        break;
                    case "/":
                        stack.push(num1/num2);
                        break;
                    default:
                }
            }
        }
        return stack.pop();
    }

    //判断是否为数字,是返回true
    boolean isNumber(String token){
        return !("+".equals(token)||"-".equals(token)||"*".equals(token)||"/".equals(token));
    }
}
View Code
package com.chenghaixiang.jianzhi2.day12;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office037 {
    public static void main(String[] args) {
        int[] aa={1,10,-15};
        Solution01 solution01=new Solution01();
        solution01.asteroidCollision(aa);
    }
}
//给定一个整数数组 asteroids,表示在同一行的小行星。
//
//对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。
//
//找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。

class Solution01 {
    public int[] asteroidCollision(int[] asteroids) {
        Deque<Integer> stacks=new LinkedList<>();
        for(int aster:asteroids){
            boolean alive=true;
            //当栈不为空,当前小行星方向为左,前一个小行星方向为右时进入
            while (alive&&aster<0&&!stacks.isEmpty()&&stacks.peek()>0){
                if(stacks.peek()<-aster){
                    alive=true;
                }else {
                    alive=false;
                }
                // 栈顶小行星爆炸,就是当前值的前一个小行星爆炸
                if(stacks.peek()<=-aster){
                    stacks.pop();
                }
            }
            if(alive){
                stacks.push(aster);
            }
        }
        int size=stacks.size();
        //将栈中元素取出
        int[] res=new int[size];
        for (int i=size-1;i>=0;i--){
            res[i] =stacks.pop();
        }
        return res;
    }
}
View Code

 

标签:总结,Deque,int,util,算法,import,public,小行星
From: https://www.cnblogs.com/chenghaixiang/p/16597161.html

相关文章

  • 港队系列算法、数据结构
    写在前面这两个东西其实并没有什么联系,但是因为都是由@dd_d首创的,所以写在一起。Update:不想新开博客了,所以以后dd_d有什么新发明就直接在这里更新了。港队线段......
  • 8.17总结
    自动刷题机\(solution\)二分答案找最大最小值考试时二分写错了ACCode#include<bits/stdc++.h>usingnamespacestd;#definelllonglonginlinellread(){ ll......
  • 【算法基础】旋转卡壳算法理解
    前言 参考1.旋转卡壳系列博客;2. 旋转卡壳(1)--求凸包(点集)直径poj2187;完......
  • 2022/8/17 总结
    A.P4343[SHOI2015]自动刷题机啊对对对,算法都对了,二分写挂了:)Solution二分答案,每次\(\mathtt{O(n)}\)判断当前的\(mid\)是否可行,最大和最小分开二分;注意:......
  • js数据结构与算法-队列的实现
    和栈的实现相似,但是这里使用对象的方式,对象的key是数字的实现,类似数组。/***队列*/classQueue{#count=0;//队列最大数量#lowestCount=0;//目前......
  • 虚拟DOM与Diff算法
    参考真实DOM的渲染在讲虚拟DOM之前,先说一下真实DOM的渲染。 浏览器真实DOM渲染的过程大概分为以下几个部分:构建DOM树。通过html parser解析处理html标记,将它们构......
  • js算法基础-栈结构的封装和进制转换
    先是栈结构的封装,使用es6的方式。#items为栈结构#表示类的私有属性,外部不能直接访问和修改。push压栈pop出栈peek查看栈顶isEmpty栈是否为空size栈内元素个数......
  • 递归算法的使用
    1packageIO;2importjava.io.File;34/**5*需求:给定一个路径,通过递归算法遍历该目录下所有内容;6*并将所有文件的绝对路径输出来;7*/8publicc......
  • 前后端传值总结
    先讲下后端给前端传值,也就是controller跳到html页面时,向html传值的过程,一般2种方法。1.用Model//举个例子@RequestMapping("/toAgentInput")publicStringtoA......
  • 乘风破浪,遇见最美Windows 11之现代Windows开发运维 - Docker容器化镜像使用规范总结
    背景在通过Docker使用和打包容器化镜像的时候,很容易因为一些不规范的操作引发不必要的麻烦,下面总结一些规范项供参考。总结建议描述镜像构建除系统镜像外所......