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


     💟💟前言

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

    🥈个人主页:小王同学🚗

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

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

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

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

    剑指offer 链接:👉 剑指offer

     

     

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

    JZ49 丑数🥚

    jz丑数

     题目描述🥚

     

    解题思路🥚

    根据题意可知 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。

    我们可以定义一个数组 dp 用来存储 丑数的个数

    题目要求从小到大排列丑数

    最小的丑数是1 所以dp[0]=1

    丑数的形式 通用公式就是2x3y5z

    所以我们就将res[n]去乘以 2、3、5,然后比较出最小的那个,就是我们当前的下一个丑数了。

    代码详解🥚

    1. import java.util.*;
    2. public class Solution {
    3. public int GetUglyNumber_Solution(int index) {
    4. if(index<=6){
    5. return index; //特判前6个丑数
    6. }
    7. int i2=0,i3=0,i5=0; //定义三个变量 分别是包含质因子 2,3,5 乘的次数
    8. int dp[]=new int[index];
    9. dp[0]=1;
    10. for(int i=1;i
    11. dp[i]=Math.min(dp[i2]*2,Math.min(dp[i3]*3,dp[i5]*5));
    12. //第一次是 2 ,3, 5 比较得到最小值是2
    13. if(dp[i]==dp[i2]*2) i2++;
    14. if(dp[i]==dp[i3]*3) i3++;
    15. if(dp[i]==dp[i5]*5) i5++;
    16. }
    17. return dp[index-1]; .//返回第n个
    18. }
    19. }

     

    过啦! 

     JZ29 顺时针打印矩阵🥚

    JZ29顺时打印矩阵

    题目描述🥚

     

    解题思路🥚

    这道题正常模拟即可

    注意边界问题

    左右 边界 跟上下边界重合的时候

    往右到底后再往下到底后再往左到底后再往上,结束这一圈,进入下一圈螺旋。

    每次走完一步 都要判断 上下 边界 或者左右边界是否重合

    代码详解🥚

    1. import java.util.*;
    2. import java.util.ArrayList;
    3. public class Solution {
    4. public ArrayList printMatrix(int [][] matrix) {
    5. ArrayList res=new ArrayList<>();
    6. if( matrix.length==0){
    7. return res;
    8. }
    9. int left=0; //左边界
    10. int right=matrix[0].length-1; //右边界
    11. int up=0; //上边界
    12. int down=matrix.length-1; //下边界
    13. while(left<=right&&up<=down){
    14. //第一行从左到右进行遍历
    15. for(int i=left;i<=right;i++)
    16. res.add(matrix[up][i]);
    17. up++;
    18. if(up>down) //如果上边界大于下边界就跳出循环
    19. break;
    20. //右边界从上到下
    21. for(int i=up;i<=down;i++)
    22. res.add(matrix[i][right]);
    23. //右边界向左
    24. right--;
    25. if(left>right)
    26. break;
    27. for(int i=right;i>=left;i--)
    28. res.add(matrix[down][i]);
    29. down--;
    30. if(up>down)
    31. break;
    32. //左边界往上
    33. for(int i=down;i>=up;i--)
    34. res.add(matrix[i][left]);
    35. left++;
    36. if(left>right)
    37. break;
    38. }
    39. return res;
    40. }
    41. }

     过辣~~

    牛客是一款不论是面试 还是刷题 都是非常有用的 还等什么注册其来吧!👉👉 牛客网

  • 相关阅读:
    Maven项目结构与构建
    Java内存区域与内存溢出异常
    ssh连接失败,提示ssh: connect to host port 22: Connection refused
    Java创建自定义注解所需要使用的几个元注解
    jQuery实现简易购物车
    使用nginx方向代理部署Vue项目刷新页面404的问题解决
    Linux软件包和进程管理
    Java基础:集合类之ArrayList、HashMap简介
    CRUD和文件上传下载
    39 WEB漏洞-XXE&XML之利用检测绕过全解
  • 原文地址:https://blog.csdn.net/weixin_59796310/article/details/126223935