💟💟前言
🥇作者简介:友友们大家好,我是你们的小王同学😗😗
🥈个人主页:小王同学🚗
🥉 系列专栏:牛客刷题专栏📖
📑 推荐一款非常火的面试、刷题神器👉 牛客网
觉得小王写的不错的话 麻烦动动小手 点赞👍 收藏⭐ 评论📄
今天给大家带来的刷题系列是:
剑指offer 链接:👉 剑指offer



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

根据题意可知 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。
我们可以定义一个数组 dp 用来存储 丑数的个数
题目要求从小到大排列丑数
最小的丑数是1 所以dp[0]=1
丑数的形式 通用公式就是2x3y5z
所以我们就将res[n]去乘以 2、3、5,然后比较出最小的那个,就是我们当前的下一个丑数了。
- import java.util.*;
- public class Solution {
- public int GetUglyNumber_Solution(int index) {
- if(index<=6){
- return index; //特判前6个丑数
- }
- int i2=0,i3=0,i5=0; //定义三个变量 分别是包含质因子 2,3,5 乘的次数
- int dp[]=new int[index];
- dp[0]=1;
- for(int i=1;i
- dp[i]=Math.min(dp[i2]*2,Math.min(dp[i3]*3,dp[i5]*5));
- //第一次是 2 ,3, 5 比较得到最小值是2
- if(dp[i]==dp[i2]*2) i2++;
- if(dp[i]==dp[i3]*3) i3++;
- if(dp[i]==dp[i5]*5) i5++;
-
-
- }
- return dp[index-1]; .//返回第n个
-
-
-
- }
- }

过啦!
JZ29 顺时针打印矩阵🥚
题目描述🥚

解题思路🥚
这道题正常模拟即可
注意边界问题
左右 边界 跟上下边界重合的时候
往右到底后再往下到底后再往左到底后再往上,结束这一圈,进入下一圈螺旋。
每次走完一步 都要判断 上下 边界 或者左右边界是否重合!
代码详解🥚
- import java.util.*;
- import java.util.ArrayList;
- public class Solution {
- public ArrayList
printMatrix(int [][] matrix) { - ArrayList
res=new ArrayList<>(); - if( matrix.length==0){
- return res;
- }
- int left=0; //左边界
- int right=matrix[0].length-1; //右边界
- int up=0; //上边界
- int down=matrix.length-1; //下边界
- while(left<=right&&up<=down){
- //第一行从左到右进行遍历
- for(int i=left;i<=right;i++)
- res.add(matrix[up][i]);
- up++;
- if(up>down) //如果上边界大于下边界就跳出循环
- break;
- //右边界从上到下
- for(int i=up;i<=down;i++)
- res.add(matrix[i][right]);
- //右边界向左
- right--;
- if(left>right)
- break;
- for(int i=right;i>=left;i--)
- res.add(matrix[down][i]);
- down--;
- if(up>down)
- break;
- //左边界往上
- for(int i=down;i>=up;i--)
- res.add(matrix[i][left]);
- left++;
- if(left>right)
- break;
-
-
-
-
-
-
- }
- return res;
-
-
-
- }
- }

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