Java算法之leetcode11题-------------盛最多容器的水
Java算法之leetcode11题-------------盛最多容器的水
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
题目给定n个数字
思路一:(两层循环)
定义一个内循环sol和外循环res的基准值为0
进行两次循环
外循环:
外循环进行n-1次循环,(0-n-1)次
内循环:
将每次外循环的数据与内循环的数据进行比较和计算。得到每一次内 循环的最大容量赋值给内循环的基准值sol。
内循环end
将每一次内循环的基准值sol与外循环的基准值res进行比较赋值给外循环的基准值res。
最后返回res
public int maxArea(int[] height) {
int sol = 0, res = 0;
for (int i = 0; i < height.length - 1; i++) {
int com = height[i];
for (int j = i + 1; j < height.length; j++) {
sol = Math.max(sol, Math.min(com, height[j]) * (j - i));
}
res = Math.max(res, sol);
}
return res;
}
思路二:(双指针法)
当前柱子是最两侧的柱子,水的宽度 d 为最大,其他的组合,水的宽度都比这个小。
左边柱子较短,决定了水的高度为 3。如果移动左边的柱子,新的水面高度不确定,一定不会超过右边的柱子高度 7。
如果移动右边的柱子,新的水面高度一定不会超过左边的柱子高度 3,也就是不会超过现在的水面高度。
public static int MaxArea(int[] height){
int res=0;
int i=0;
int j=height.length-1;
while (i
int singleArea=(j-i)*(Math.min(height[i],height[j]));
res=Math.max(res,singleArea);
if (height[i]
i++;
}else {
j--;
}
}
return res;
}
Java算法之leetcode11题-------------盛最多容器的水相关教程
之给 N x 3 网格图涂色的方案数的求解算法
之给 N x 3 网格图涂色的方案数的求解算法 一、题目要求 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。 给你网格图的行数 n ,请返回给 grid
java面向对象(上) 实验1
java面向对象(上) 实验1 Account.java public class Account { private int id; private double balance; private double annualInterestRate; public int getId() { return id; } public void setId(int id) { this.id = id; } public double getBalance()
A*寻路算法
A*寻路算法 2D常用 使用用途 A*节约一些性能 NavMeshAgent消耗性能会多一些相同的地方 都是烘焙不同的地方NavMeshAgent网格烘焙A*实时分析A* 实时分析 其实也是通过网格烘焙 但是他是自己划分出来的网格 每个格子作为道路行走的最小单位每个格子都有自己的属
【数据结构与算法学习】稀疏数组
【数据结构与算法学习】稀疏数组 目录 1.需求提出: 2.基本介绍: 3.处理方法: 4.举例: 5.思路: 6.代码实现: 1.需求提出: 由于二维数组中常常大部分存放的都是默认值,造成了内存的浪费,即记录了很多没有意义的数据。 2.基本介绍: 当一个数组中大部分
三角形面积
三角形面积 import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double[] x = new double[3]; double[] y = new double[3]; for (int i = 0; i 3; i++){ x[i] = scanner.nex
java8 InAction Stream相关算子的基础使用
java8 InAction Stream相关算子的基础使用 流Stream中的中间以及终端操作 例子: public class Trader { private final String name; private final String city; public Trader(String name, String city) { this.name = name; this.city = city; } public S
【Java 学习】服务端获取客户端浏览器、操作系统、设备类型等信
【Java 学习】服务端获取客户端浏览器、操作系统、设备类型等信息 文章目录 1、服务端获取客户端信息 (1)常见问题 (2)相关依赖 (3)编写工具类 (4)核心控制层 1、服务端获取客户端信息 (1)常见问题 我在工作中遇到一个问题,需要在服务端判断用户的
完全背包(Java)
完全背包(Java) 第一种解法 第一层循环 控制着放入的物品 第二层循环 控制着背包的重量 第三层循环 控制着放入背包物品的数量. 第一行第一列全为0,方便我们计算 递推的关系式为dp[i+1][j] = Math.max(dp[i+1][j],dp[i][j-k * w[i]]+k*v[i]); k v[i]:选取k