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

网站如何做静态化核心关键词是什么意思

网站如何做静态化,核心关键词是什么意思,网店代运营合同模板,室内设计个人工作室文章目录 1.有效的括号1.答案2.思路 2.最小栈1.答案2.思路 3.前 K 个高频元素1.答案2.思路 4.用栈实现队列1.答案2.思路 5.删除字符串中的所有相邻重复项1.答案2.思路 1.有效的括号 1.答案 package com.sunxiansheng.arithmetic.day10;import java.util.Stack;/*** Descripti…

文章目录

    • 1.有效的括号
        • 1.答案
        • 2.思路
    • 2.最小栈
        • 1.答案
        • 2.思路
    • 3.前 K 个高频元素
        • 1.答案
        • 2.思路
    • 4.用栈实现队列
        • 1.答案
        • 2.思路
    • 5.删除字符串中的所有相邻重复项
        • 1.答案
        • 2.思路

1.有效的括号

1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.Stack;/*** Description: 20. 有效的括号** @Author sun* @Create 2025/1/15 09:37* @Version 1.0*/
public class t20 {public static boolean isValid(String s) {// 栈Stack<Character> stack = new Stack<>();// 遍历for (int i = 0; i < s.length(); i++) {// 如果是左括号就入栈char c = s.charAt(i);if (c == '(' || c == '{' || c == '[') {stack.push(c);}// 如果是右括号,就进行匹配if (c == ')' || c == '}' || c == ']') {// 如果栈为空,就返回falseif (stack.isEmpty()) {return false;}// 从栈中获取一个左括号进行匹配Character pop = stack.pop();boolean match = match(pop, c);if (!match) {return false;}}}return stack.isEmpty();}/*** 匹配** @param left* @param right* @return*/private static boolean match(Character left, Character right) {if (left == '(' && right == ')') {return true;}if (left == '{' && right == '}') {return true;}if (left == '[' && right == ']') {return true;}return false;}
}
2.思路

就是左括号入栈,右括号匹配,但是需要注意的是右括号在匹配左括号之前栈不能为空,并且最后所有的右括号都匹配完了栈也不能为空

2.最小栈

1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.Stack;/*** Description: 155. 最小栈** @Author sun* @Create 2025/1/15 09:51* @Version 1.0*/
public class MinStack {/*** 辅助栈*/private Stack<Integer> stack;/*** 最小栈*/private Stack<Integer> minStack;public MinStack() {stack = new Stack<>();minStack = new Stack<>();// 初始化为一个最大的元素minStack.push(Integer.MAX_VALUE);}public void push(int val) {// 压栈压最小stack.push(val);minStack.push(Math.min(val, minStack.peek()));}public void pop() {// pop都出去stack.pop();minStack.pop();}public int top() {return stack.peek();}public int getMin() {return minStack.peek();}
}
2.思路

最小栈初始化一个最大值,压栈压最小,pop都出去,这样就能保证最小栈的栈顶是目前的最小元素

3.前 K 个高频元素

1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;/*** Description: 347. 前 K 个高频元素** @Author sun* @Create 2025/1/15 10:06* @Version 1.0*/
public class t347 {public static int[] topKFrequent(int[] nums, int k) {// 首先统计频率Map<Integer, Integer> map = new HashMap<>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}// 构建大顶堆PriorityQueue<Map.Entry<Integer, Integer>> pq =new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());// 将map的元素放到大顶堆中for (Map.Entry<Integer, Integer> entry : map.entrySet()) {pq.offer(entry);}// 从大顶堆中取出前k个元素int[] res = new int[k];for (int i = 0; i < k; i++) {res[i] = pq.poll().getKey();}return res;}
}
2.思路

统计频率之后将其放到大顶堆中,然后取出前k个元素即可

4.用栈实现队列

1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.Stack;/*** Description: 232. 用栈实现队列** @Author sun* @Create 2025/1/15 10:19* @Version 1.0*/
public class MyQueue {/*** 输入栈和输出栈*/private Stack<Integer> stackIn;private Stack<Integer> stackOut;public MyQueue() {stackIn = new Stack<>();stackOut = new Stack<>();}/*** push到输入栈** @param x*/public void push(int x) {stackIn.push(x);}/*** 如果输出栈是空的,就将输入栈的元素全都放到输出栈** @return*/public int pop() {if (stackOut.isEmpty()) {while (!stackIn.isEmpty()) {stackOut.push(stackIn.pop());}}return stackOut.pop();}/*** 如果输出栈是空的,就将输入栈的元素全都放到输出栈** @return*/public int peek() {if (stackOut.isEmpty()) {while (!stackIn.isEmpty()) {stackOut.push(stackIn.pop());}}return stackOut.peek();}/*** 只有当输入栈和输出栈都不为空的时候才可以** @return*/public boolean empty() {return stackIn.isEmpty() && stackOut.isEmpty();}
}
2.思路

两个栈可以实现队列的原理就是,一个输入栈输入,然后需要输出的时候就将输入栈中的元素放到输出栈中,这样负负得正,就是顺序的了

5.删除字符串中的所有相邻重复项

1.答案
package com.sunxiansheng.arithmetic.day10;import java.util.Stack;/*** Description: 1047. 删除字符串中的所有相邻重复项** @Author sun* @Create 2025/1/15 10:29* @Version 1.0*/
public class t1047 {public static String removeDuplicates(String s) {// 栈Stack<Character> stack = new Stack<>();for (int i = 0; i < s.length(); i++) {// 当前元素char c = s.charAt(i);// 如果栈不为空,并且匹配成功的才会出栈,否则就是栈为空或者是栈不为空但是匹配失败的情况,就入栈if (!stack.isEmpty() && stack.peek() == c) {stack.pop();} else {stack.push(c);}}// 将栈中的元素倒序char[] chars = new char[stack.size()];for (int i = chars.length - 1; i >= 0; i--) {chars[i] = stack.pop();}return new String(chars);}
}
2.思路

如果栈不为空,并且匹配成功的才会出栈,否则就是栈为空或者是栈不为空但是匹配失败的情况,就入栈

http://www.ds6.com.cn/news/8169.html

相关文章:

  • 任丘市做网站微信营销模式有哪些
  • iis如何用ip地址做域名访问网站七台河网站seo
  • 做的网站在百度找不到营销网站建设制作
  • 做网站必须要数据库么怎么优化
  • 广州网站建设培训市场营销策略有哪4种
  • ai网页生成宁波如何做seo排名优化
  • 英语做课后作业的网站衡阳网站建设
  • 猎头公司推荐seo工具包括
  • 做区块链在哪个网站爱战网关键词查询网站
  • 网站标题怎么改seo的英文全称是什么
  • 嘉兴网站搜索优化制作公司网页多少钱
  • 学做会计账的网站新冠疫情最新消息今天公布
  • cdr做网站怎么导出百度网盘电脑版
  • 网站网络排名优化方法企业培训课程名称
  • 网站开发的基本技术写软文怎么接单子
  • 做淘宝店招的网站怎样推广自己的网站
  • 做网站怎么宣传运营微营销推广软件
  • 日语网站建设市场电商运营公司排名
  • 1g网站空间网站策划方案范文
  • app定制小程序开发win10优化大师好用吗
  • fview网站开发友情链接平台站长资源
  • 深圳网站建设哪家好怀化seo推广
  • 旅行网站建设的规划书谷歌seo博客
  • 网站备案号怎么放怎么在网上做广告宣传
  • 蓝海国际版网站建设深圳营销型网站定制
  • 找人做网站注意事项产品推广方案范例
  • 20年的域名做网站怎么样温州百度推广公司电话
  • wordpress不能后台seo优化点击软件
  • django网站开发视频品牌营销成功案例
  • 网站色彩的应用seo需要掌握哪些技术