0


牛客刷题——剑指offer(第三期)

** 💟💟前言**

🥇作者简介:友友们大家好,我是你们的小王同学😗😗

🥈个人主页:小王同学🚗****

🥉 系列专栏:牛客刷题专栏📖

📑 推荐一款非常火的面试、刷题神器👉牛客网

觉得小王写的不错的话 麻烦动动小手 点赞👍 收藏⭐ 评论📄

今天给大家带来的刷题系列是:

剑指offer 链接:👉 剑指offer

** 里面有非常多的题库 跟面经知识 真的非常良心了!!**

JZ9 用两个栈实现队列🍔

JZ9 用两个栈实现队列

题目描述🍔

解题思路🍔

借助栈的先进后出规则模拟实现队列的先进先出

1、当插入时,直接插入 stack1

2、当弹出时,当 stack2 不为空,弹出 stack2 栈顶元素,如果 stack2 为空,将 stack1 中的全部数逐个出栈入栈 stack2,再弹出 stack2 栈顶元素

代码详解🍔

  1. import java.util.*;
  2. import java.util.Stack;
  3. public class Solution {
  4. Stack<Integer> stack1 = new Stack<Integer>();
  5. Stack<Integer> stack2 = new Stack<Integer>();
  6. public void push(int node) {
  7. stack1.push(node);
  8. }
  9. public int pop() {
  10. if(stack1.empty()&&stack2.empty()){
  11. return -1;
  12. }
  13. if(stack2.empty()){
  14. while(!stack1.empty()){
  15. stack2.push(stack1.pop());
  16. }
  17. }
  18. return stack2.pop();
  19. }
  20. }

**过辣 这道题 思路出来了 就好写了!~ **

JZ14 剪绳子🍔

JZ14 剪绳子

题目描述🍔

解题思路🍔

  • 当n<3时 直接计算即可
  • 用dp数组表示长度为i的绳子可以被剪出来的最大乘积,初始化前面4个的规律很好推出
  • 遍历每个长度,对于每个长度的最大乘积,可以遍历从1到i的每个固定一段,按照上述公式求的最大值。
  • 数组最后一个就是最大值

代码详解🍔

  1. import java.util.*;
  2. public class Solution {
  3. /**
  4. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  5. *
  6. *
  7. * @param n int整型
  8. * @return int整型
  9. */
  10. public int cutRope (int n) {
  11. if(n<=3){
  12. return n-1;
  13. }
  14. int dp[]=new int[n+1]; //dp[i]表示长度为i的绳子剪出来的最大乘积
  15. //初始化 dp 前四段长度的乘积
  16. dp[1]=1;
  17. dp[2]=2;
  18. dp[3]=3;
  19. dp[4]=4;
  20. //遍历后面的长度
  21. for(int i=5;i<=n;i++){
  22. for(int j=1;j<i;j++){
  23. dp[i]=Math.max(dp[i],j*dp[i-j]);
  24. }
  25. }
  26. return dp[n];
  27. // write code here
  28. }
  29. }

JZ18 删除链表的节点🍔

JZ18 删除链表的节点

题目描述🍔

解题思路🍔

既然是整个链表元素都不相同,我们要删除给定的一个元素,那我们首先肯定要找到这个元素,然后考虑删除它。

删除一个链表节点,肯定是断掉它的前一个节点指向它的指针,然后指向它的后一个节点,即越过了需要删除的这个节点。

代码详解🍔

  1. import java.util.*;
  2. /*
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next = null;
  6. * public ListNode(int val) {
  7. * this.val = val;
  8. * }
  9. * }
  10. */
  11. public class Solution {
  12. /**
  13. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  14. *
  15. *
  16. * @param head ListNode类
  17. * @param val int整型
  18. * @return ListNode类
  19. */
  20. public ListNode deleteNode (ListNode head, int val) {
  21. //加入一个虚拟头结点
  22. ListNode res= new ListNode(0);
  23. res.next=head;
  24. //前序节点
  25. ListNode pre= res;
  26. ListNode cur =head;
  27. while(cur!=null){
  28. //如果找到当前节点
  29. if(cur.val==val){
  30. //断开连接
  31. pre.next=cur.next;
  32. break;
  33. }
  34. pre=cur;
  35. cur=cur.next;
  36. }
  37. //返回删除后链表的头节点
  38. return res.next;
  39. // write code here
  40. }
  41. }

牛客是一款不论是面试 还是刷题 都是非常有用的 还等什么注册起来吧!👉👉 全部动态_牛客网 (nowcoder.com)

标签: java 面试

本文转载自: https://blog.csdn.net/weixin_59796310/article/details/126095205
版权归原作者 学好c语言的小王同学 所有, 如有侵权,请联系我们删除。

“牛客刷题&mdash;&mdash;剑指offer(第三期)”的评论:

还没有评论