面试经典150题【101-110】

文章目录

  • 面试经典150题【101-110】
    • 9.回文数
    • 61.加一
    • 172.阶乘后的0
    • 69.x的平方根
    • 50.Pow(x,n)
    • 149.直线上最多的点数
    • 52.N皇后II
    • 120.三角形最小路径和
    • 64.最小路径和
    • 63.不同路径II

面试经典150题【101-110】

6道偏数学的题和4道二维dp

9.回文数

一开始想转为字符串再判断。后来发现可以直接取后一半数字再判断。

class Solution {public boolean isPalindrome(int x) {//因为如果x后面出现0,后面算法会出错if(x<0 || x%10==0 && x!=0){return false;}int temp=0;while(temp<x){temp = temp*10 + x%10;x = x/10;}// x从1221 -> 12;  x: 12321 -> 12 <123return x==temp || x==temp/10;}
}

61.加一

在这里插入图片描述

class Solution {public int[] plusOne(int[] digits) {for(int i=digits.length-1;i>=0;i--){digits[i]++;digits[i] = digits[i]%10;if(digits[i] != 0) return digits;}//都加完了还不返回,说明是999这种int[] ans=new int[digits.length+1];ans[0]=1;return ans;}
}

直接加,最后遇到999这种则扩容。

172.阶乘后的0

在这里插入图片描述
25 = 25 *。。。 *5。。。
答案是3,看有几个5.其中25这个数字代表两个5

class Solution {public int trailingZeroes(int n) {int count=0;for(int i=0;i<n+1;i++){int temp=i;//最后temp会被干到0while(temp %5==0 && temp!=0){count++;temp =temp/5;}}return count;}
}

69.x的平方根

直接二分去搜,牛顿的数学太复杂。

50.Pow(x,n)

要将n进行二进制的拆分
在这里插入图片描述

class Solution {public double myPow(double x, int n) {if(x ==0.0f) return 0;long b=n;double res=1;if(b<0){x = 1/x;b = -b;}while(b>0){if((b&1)==1){res = res*x;}x =x*x;b = b>>1;}return res;}
}

149.直线上最多的点数

在这里插入图片描述
三个点,ABC,AB和BC的斜率应该一样。
暴力的话就是先确定两个点,再依次遍历其他的点,看斜率是否等于AB的斜率。
用哈希表就是,先确定一个点(N),计算与其他所有点(N)的斜率,将斜率k存储到哈希表中。取哈希表中value的最大值即可。

public class LC149 {public static int maxPoints(int[][] points) {int ans=0;for(int i=0;i<points.length;i++){HashMap<String,Integer>map =new HashMap<>();int[] x=points[i];for(int j=i+1;j<points.length;j++){int[] y=points[j];int x1=x[0],x2=y[0],y1=x[1],y2=y[1];int deltax = x1-x2,deltay=y1-y2;int gcdxy=gcd(deltax,deltay);String key=deltax/gcdxy +"_"+deltay/gcdxy;map.put(key,map.getOrDefault(key,0)+1);//[1,1]-[2,2],  [1,1]-[3,3]   [2,2]-[3,3]   [7,9] - [9,11]int value = map.get(key);ans =  ans=Math.max(ans,value+1);}}return ans;}public static int gcd(int x,int y){return y==0? x:gcd(y,x%y);}public static void main(String[] args) {int[][]points= {{1,1},{2,2},{3,3}};System.out.println(maxPoints(points));}}

一个要注意最小公约数gcd的写法。
HashMap应该是针对于每一个 i 点的,则每一个 j 点都要统计。

52.N皇后II

在这里插入图片描述
老解法,回溯。先在每一行下棋,然后下一行,然后回溯到这一行没下。去下这一行的下一列。

public class LC52 {private static int ans=0;public static int totalNQueens(int n) {char[][] board=new char[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){board[i][j]='.';}}dfs(board,0);return ans;}public static void dfs(char[][] board,int row){if(row == board.length){ans++;return;}for(int j=0;j< board.length;j++){if(check(board,row,j)){board[row][j]='Q';dfs(board,row+1);board[row][j]='.';}}}public static boolean check(char[][]board,int row,int col){// 这一列for(int i=0;i< board.length;i++){if(board[i][col]=='Q') return false;}// 检查 135度角是否有皇后for (int i = row - 1, j = col - 1; i >=0 && j >= 0; i--, j--) {if (board[i][j] == 'Q') {return false;}}// 检查 45度角是否有皇后for(int i = row - 1, j = col + 1; i >= 0 && j < board.length; i--, j++) {if (board[i][j] == 'Q') {return false;}}return true;}public static void main(String[] args) {System.out.println(totalNQueens(4));}
}

120.三角形最小路径和

在这里插入图片描述

class Solution {public int minimumTotal(List<List<Integer>> triangle) {// 最后一行全是0int[][] dp = new int[triangle.size() + 1][triangle.size() + 1];for (int i = triangle.size() - 1; i >= 0; i--) {for (int j = 0; j <= i; j++) {dp[i][j] = Math.min(dp[i + 1][j], dp[i + 1][j + 1]) + triangle.get(i).get(j);}}return dp[0][0];}
}

这个是倒序的,从三角形的下边到上面。
迭代公式:
dp[i][j] = Math.min(dp[i + 1][j], dp[i + 1][j + 1]) + triangle.get(i).get(j);

64.最小路径和

在这里插入图片描述

class Solution {public int minPathSum(int[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (i == 0 && j == 0)continue;else if (i == 0)grid[i][j] = grid[i][j - 1] + grid[i][j];else if (j == 0)grid[i][j] = grid[i - 1][j] + grid[i][j];elsegrid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];}}return grid[grid.length - 1][grid[0].length - 1];}
}

这个是从上到下迭代的,迭代公式:
grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];

63.不同路径II

在这里插入图片描述

    public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m=obstacleGrid.length;int n=obstacleGrid[0].length;if(obstacleGrid[0][0]==1) return 0;int[][] dp=new int[m][n];dp[0][0]=1;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(i==0 && j==0) continue;if(i>0 && j>0 && obstacleGrid[i][j]==0){dp[i][j]=dp[i-1][j]+dp[i][j-1];}else if(i==0 && obstacleGrid[i][j]==0){dp[i][j]=dp[i][j-1];}else if(j==0 && obstacleGrid[i][j]==0){dp[i][j]=dp[i-1][j];}else{//有障碍物dp[i][j]=0;}}}return dp[m-1][n-1];}

递推公式: dp[i][j]=dp[i-1][j]+dp[i][j-1];
应该先用俩for循环初始一下第一行和第一列。然后ij都从1开始循环也蛮好的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号处理--基于混合CNN和transfomer自注意力的多通道脑电信号的情绪分类的简单应用

目录 关于 工具 数据集 数据集简述 方法实现 数据读取 ​编辑数据预处理 传统机器学习模型(逻辑回归&#xff0c;支持向量机&#xff0c;随机森林) 多层感知机模型 CNNtransfomer模型 代码获取 关于 本实验利用结合了卷积神经网络 (CNN) 和 Transformer 组件的混合…

windows下powershell与linux下bash美化教程(使用starship)

starship美化教程 Win11 Powershell 安装 在命令行使用下面命令安装 # 安装starship winget install starship将以下内容添加到 Microsoft.PowerShell_profile.ps1&#xff0c;可以在 PowerShell 通过 $PROFILE 变量来查询文件的位置 Invoke-Expression (&starship i…

web学习笔记(四十五)Node.js

目录 1. Node.js 1.1 什么是Node.js 1.2 为什么要学node.js 1.3 node.js的使用场景 1.4 Node.js 环境的安装 1.5 如何查看自己安装的node.js的版本 1.6 常用终端命令 2. fs 文件系统模块 2.1引入fs核心模块 2.2 读取指定文件的内容 2.3 向文件写入指定内容 2.4 创…

yarn按包的时候报错 ../../../package.json: No license field

运行 yarn config list 然后运行 yarn config set strict-ssl false 之后yarn就成功了

基于SpringBoot“网上选课系统”设计和实现(源码定制以及咨询!!)

博主介绍&#xff1a;✌全网粉丝10W,B站项目阿龙、csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、华为云获奖者&#xff0c;“程序员阿龙”✌ 主要内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python&#xff0c;MYSQL、Hodpoo…

SpringBoot2.6.3 + knife4j-openapi3

1.引入项目依赖&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.5.0</version> </dependency> 2.新增配置文件 import io.swag…

Docker搭建LNMP环境实战(05):CentOS环境安装Docker-CE

前面几篇文章讲了那么多似乎和Docker无关的实战操作&#xff0c;本篇总算开始说到Docker了。 1、关于Docker 1.1、什么是Docker Docker概念就是大概了解一下就可以&#xff0c;还是引用一下百度百科吧&#xff1a; Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以…

【机器学习之---数学】随机游走

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 随机游走 1. 概念 1.1 例1 在你的饮食俱乐部度过了一个富有成效的晚上后&#xff0c;你在不太清醒的状态下离开了。因此&#xff0c;你会醉醺醺地在展…

数据结构(五)单链表专题

在开始之前&#xff0c;我先来给大家讲一下顺序表与链表的区别&#xff1a; 它们在堆上存储的差异&#xff1a; 我们可以很容易的知道&#xff0c;循序表是连续的有序的&#xff0c;但链表是杂乱的&#xff0c;它们通过地址彼此联系起来。 1. 链表的概念及结构 概念&#xff1…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目&#xff0c;通过该项目掌握计算机视觉的方法在交通领域的相关应用&#xff0c;包括车道线检测的方法&#xff0c;多目标车辆追踪及流量统计方法&#…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口&#xff0c;遇到一个接口总是报405错误&#xff0c;有对接经验的开发应该都知道是请求方式不对&#xff0c;假如接口定义为POST请求的&#xff0c;但是客户端却用GET请求&#xff0c;这时候就会报这个错误。Android客户端那边使用xUtils框架…

【小白入门篇3】还是GPT4更香

上一节文章《【小白入门篇2】总有一款AI工具适合你》介绍了很多ai产品给大家&#xff0c;有同学私信我&#xff0c;国内工具还是比较差&#xff0c;还是想用gpt4模型。这个章节介绍一些gpt4工具给大家, 其中大部分都只有一些免费的次数, 而且都需要kx上网才能访问。 OpenAI ch…

浙大版《C语言程序设计(第4版)》题目集-练习4-7 求e的近似值

自然常数 e 可以用级数 1 1 / 1 ! 1 / 2 ! ⋯ 1 / n ! ⋯ 11/1!1/2!⋯1/n!⋯ 11/1!1/2!⋯1/n!⋯来近似计算。本题要求对给定的非负整数 n&#xff0c;求该级数的前 n1 项和。 输入格式: 输入第一行中给出非负整数 n&#xff08;≤1000&#xff09;。 输出格式: 在一行…

记录一下安装ubuntu子系统的pycharm遇到的问题

sudo su #切换为root用户获取管理员权限用于新建用户 adduser username #新建用户&#xff08;例如用户名为username&#xff09; adduser username sudo #将用户添加到 sudo 组同样遇到这个问题&#xff0c;解决方法是&#xff1a;先新建一个用户名&#xff0c;然后再切换到这…

Android 性能优化实例分享-内存优化 兼顾效率与性能

背景 项目上线一段时间后,回顾重要页面 保证更好用户体验及生产效率&#xff0c;做了内存优化和下载导出优化&#xff0c;具体效果如最后的一节的表格所示。 下面针对拍摄流程的两个页面 预览页 导出页优化实例进行介绍&#xff1a; 一.拍摄前预览页面优化 预览效果问题 存在…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址&#xff0c;原来是我下载了.exe,但没有双击启动安装ase文件夹呀&#xff01;&#xff01;&#xff01;&#xff01;晕&#xff0c;服了我自己

Python7:接口自动化学习1 RPC

API&#xff08;Application Programmming Interface&#xff09; 应用编程接口&#xff0c;简称“接口” 接口&#xff1a;程序之间约定的通信方法 特点&#xff1a;约定了调用方法&#xff0c;以及预期的行为&#xff0c;但是不透露具体细节 意义&#xff1a;程序能解耦&…

【No.20】蓝桥杯简单数论下|寻找整数|素数的判断|笨小猴|最大最小公倍数|素数筛|埃氏筛|欧氏线性筛|质数|分解质因子(C++)

寻找整数 【题目描述】 有一个不超过 1 0 1 7 10^17 1017的正整数n&#xff0c;知道这个数除以2至49后的余数如下表所示&#xff0c;求这个正整数最小是多少 解法一&#xff1a;模拟 暴力法&#xff1a;一个个检验 1 … 1 0 17 1\dots 10^{17} 1…1017的每个数 由于这个数n…

【pytest、playwright】构建POM项目,以及解决登录问题,allure环境问题

目录 前言 1、文件目录 2、安装依赖 3、POM项目实战-案例&#xff1a;打开指定页面 目录结构&#xff1a; pages中的代码&#xff1a; cases中的代码&#xff1a; 4、解决登录问题 问题&#xff1a; 解决方案&#xff1a; 获取登录的用户信息&#xff08;cookie&a…

DasViewer电脑客户端打开文件夹时,一直显示崩溃,该怎么解决?

问题如图 如若用的是DasViewer V3.2.4Beta版本&#xff0c;可以换回3.2.1版本进行尝试。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏…