当前位置:网站首页>Day31 LeetCode
Day31 LeetCode
2022-07-30 19:41:00 【the sun is falling】
1. 数组序号转换
给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号.
序号代表了一个元素有多大.序号编号的规则如下:
- 序号从 1 开始编号.
- 一个元素越大,那么序号越大.如果两个元素相等,那么它们的序号相同.
- 每个数字的序号都应该尽可能地小.
分析:
先对arrDuplicate and sort to getarr1,Create a hash table and comparearr1Iterate over to get the sorted position of each number,然后创建一个数组res大小与arr相同,遍历arr,Find the current number in the hash tablevalue并把它value写进resin the current location of.
class Solution {
public int[] arrayRankTransform(int[] arr) {
int[] sortedArr = new int[arr.length];
System.arraycopy(arr, 0, sortedArr, 0, arr.length);
Arrays.sort(sortedArr);
Map<Integer, Integer> ranks = new HashMap<Integer, Integer>();
int[] ans = new int[arr.length];
for (int a : sortedArr) {
if (!ranks.containsKey(a)) {
ranks.put(a, ranks.size() + 1);
}
}
for (int i = 0; i < arr.length; i++) {
ans[i] = ranks.get(arr[i]);
}
return ans;
}
}
2. 完全平方数
给你一个整数 n ,返回和为 n 的完全平方数的最少数量 .完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积.例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是.
示例:
输入:n = 12
输出:3
解释:12 = 4 + 4 + 4
分析:
动态规划:
- 首先初始化长度为 n+1 的数组 dp,每个位置都为 0
- 如果 n 为 0,则结果为 0
- 对数组进行遍历,下标为 i,每次都将当前数字先更新为最大的结果,即 dp[i]=i,比如 i=4,最坏结果为 4=1+1+1+1 即为 4 个数字
- 动态转移方程为:dp[i] = MIN(dp[i], dp[i - j * j] + 1),i 表示当前数字,j*j 表示平方数
class Solution {
public int numSquares(int n) {
int[] dp = new int[n+1];
dp[0] = 0;
for (int i = 1; i < dp.length; i++) {
dp[i] = i;
for (int j = 1; i-j*j>=0; j++) {
dp[i] = Math.min(dp[i], dp[i - j*j]+1);
}
}
return dp[n];
}
}
3. 有效的正方形
给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true .点的坐标 pi 表示为 [xi, yi] .Inputs are not given in any order.A valid square has four equal sides and four equal angles(90度角).
分析:
求出6条边,Four side lengths and two diagonals.Only squares and rhombus have sides of equal length,Only squares have equal diagonals
Therefore, the sorting can determine whether the side lengths and the diagonals are equal.
class Solution {
public long len(int[] x,int[] y){
return 1L * (x[0] - y[0]) * (x[0] - y[0]) + 1L * (x[1] - y[1]) * (x[1] - y[1]);
}
public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
if(p1[0] == p2[0] && p1[1] == p2[1]) return false;
long[] l = new long[6];
l[0] = len(p1,p2);
l[1] = len(p1,p3);
l[2] = len(p1,p4);
l[3] = len(p2,p3);
l[4] = len(p2,p4);
l[5] = len(p3,p4);
Arrays.sort(l);
return l[0] == l[1] && l[0] == l[2] && l[0] == l[3] && l[4] == l[5];
}
}
边栏推荐
- LeetCode 0952. Calculate Maximum Component Size by Common Factor: Mapping / Union Search
- 深入浅出边缘云 | 3. 资源配置
- NXP IMX8QXP replacement DDR model operation process
- Linux下载安装mysql5.7版本教程最全详解
- 第十七届“振兴杯”全国青年 职业技能大赛——计算机程序设计员(云计算平台与运维)参赛回顾与总结
- MySQL数据库 ---MySQL表的增删改查(进阶)
- Alibaba Cloud Martial Arts Headline Event Sharing
- Win11如何更改默认下载路径?Win11更改默认下载路径的方法
- Another company interview
- NXP IMX8QXP更换DDR型号操作流程
猜你喜欢

Perfectly Clear QuickDesk & QuickServer图像校正优化工具

Encapsulates a console file selector based on inquirer

MySQL分库分表

技术很牛逼,还需要“向上管理”吗?

VBA 运行时错误‘-2147217900(80040e14):自动化(Automation)错误

M3SDA:用于多源域自适应的矩匹配

阿里面试这些微服务还不会?那还是别去了,基本等通知

The JDBC programming of the MySQL database

MySQL slow query optimization

centos7安装mysql8
随机推荐
Linux下安装Mysql5.7,超详细完整教程,以及云mysql连接
MySQL六脉神剑,SQL通关大总结
MindSpore:Cifar10Dataset‘s num_workers=8, this value is not within the required range of [1, cpu_thr
部分分类网络性能对比
Download and installation of the latest version of MySQL 8.0 under Linux (detailed steps)
coming!Dongfang Selection brings goods to the live broadcast of Longjiang agricultural products
Mapped Statements collection does not contain value for的解决方法
Install Mysql5.7 under Linux, super detailed and complete tutorial, and cloud mysql connection
Spark学习:用spark实现ETL
监听开机广播
Talking about Contrastive Learning (Contrastive Learning) the first bullet
Day31 LeetCode
MySQL eight-part text recitation version
MySQL分组后取最大一条数据【最优解】
MongoDB打破了原则引入SQL?
golang日志库zerolog使用记录
VS Code 连接SQL Server
第十七届“振兴杯”全国青年 职业技能大赛——计算机程序设计员(云计算平台与运维)参赛回顾与总结
Linux下最新版MySQL 8.0的下载与安装(详细步骤)
HCIP --- 企业网的三层架构