- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
LeetCode: 419. 甲板上的战舰
描述:
给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。
战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。
X
class Solution {
public int countBattleships(char[][] board) {
int res = 0;
for(int i = 0; i < board.length; i++) {
for(int j = 0; j < board[0].length; j++) {
if((board[i][j] == 'X') && (i == 0 || board[i-1][j]=='.') && (j == 0 || board[i][j-1]=='.')){
res++;
}
}
}
return res;
}
}
LeetCode: 443. 压缩字符串
描述:
给你一个字符数组 chars ,请使用下述算法压缩:
从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 :
压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。
请在 修改完输入数组后 ,返回该数组的新长度。
你必须设计并实现一个只使用常量额外空间的算法来解决此问题。
class Solution {
public int compress(char[] chars) {
StringBuilder sb = new StringBuilder();
int left = 0;
int right = 0;
while(right < chars.length) {
right++;
while(right < chars.length && chars[left] == chars[right]) {
right++;
}
sb.append(chars[left]);
if(right - left > 1) {
sb.append(right - left);
}
left = right;
}
for(int i = 0; i < sb.length(); i++) {
chars[i] = sb.charAt(i);
}
return sb.length();
}
}
LeetCode: 501. 二叉搜索树中的众数
描述:
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。
如果树中有不止一个众数,可以按 任意顺序 返回。
假定 BST 满足如下定义:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<Integer> list = new ArrayList<>();
int maxCount = 0;
int count = 0;
TreeNode pre = null;
public int[] findMode(TreeNode root) {
inorder(root);
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
public void inorder(TreeNode root) {
if(root == null) return;
inorder(root.left);
if(pre == null) {
count = 1;
}else if(pre.val == root.val) {
count++;
}else{
count = 1;
}
pre = root;
if(maxCount == count) {
list.add(root.val);
}
if(maxCount < count) {
maxCount = count;
list.clear();
list.add(root.val);
}
inorder(root.right);
}
}
LeetCode: 503. 下一个更大元素 II
描述:
给定一个循环数组 nums
( nums[nums.length - 1]
的下一个元素是 nums[0]
),返回 nums 中每个元素的 下一个更大元素 。
数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。
class Solution {
public int[] nextGreaterElements(int[] nums) {
int[] res = new int[nums.length];
Arrays.fill(res,-1);
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < nums.length * 2; i++) {
int val = nums[i % nums.length];
while(!stack.isEmpty() && val > nums[stack.peek()]){
res[stack.pop()] = val;
}
if(i < nums.length) stack.add(i);
}
return res;
}
}
LeetCode: 508. 出现次数最多的子树元素和
描述:
给你一个二叉树的根结点 root ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。
一个结点的 「子树元素和」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
Map<Integer,Integer> map = new HashMap<>();
int maxCount = 0;
public int[] findFrequentTreeSum(TreeNode root) {
if(root == null) return new int[0];
inorder(root);
List<Integer> list = new ArrayList<>();
int i = 0;
for(Map.Entry<Integer,Integer> entry : map.entrySet()) {
if(maxCount == entry.getValue()) list.add(entry.getKey());
}
int[] res = new int[list.size()];
for(int j = 0; j < list.size(); j++) {
res[j] = list.get(j);
}
return res;
}
public int inorder(TreeNode root) {
if(root == null) return 0;
int left = inorder(root.left);
int right = inorder(root.right);
int sum = left + right + root.val;
map.put(sum,map.getOrDefault(sum,0)+1);
maxCount = Math.max(maxCount,map.get(sum));
return sum;
}
}
LeetCode: 537. 复数乘法
描述:
复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件:
i^2 == -1
nums1
和 nums2
进行字符串拆分a1
, nums1 的虚部为 a2
b1
, nums2 的虚部为 b2
a1*b1-a2*b2
, 虚部是 a2*b1+a1*b2
a1*b1-a2*b2 + a2*b1+a1*b2 i
class Solution {
public String complexNumberMultiply(String num1, String num2) {
String[] s1 = num1.split("\\+|i");
int a1 = Integer.parseInt(s1[0]);
int a2 = Integer.parseInt(s1[1]);
String[] s2 = num2.split("\\+|i");
int b1 = Integer.parseInt(s2[0]);
int b2 = Integer.parseInt(s2[1]);
int res1 = a1 * b1 - a2 * b2;
int res2 = a2 * b1 + a1 * b2;
return res1 + "+" + res2 + "i";
}
}
我有一个网站。 必须登录才能看到里面的内容。 但是,我使用此代码登录。 doc = Jsoup.connect("http://46.137.207.181/Account/Login.aspx")
我正在尝试为我的域创建一个 SPF 记录并使我的邮件服务器能够对其进行评估。我在邮件服务器上使用 Postfix 并使用 policyd-spf (Python) 来评估记录。目前,我通过我的私有(p
我需要为负载平衡的 AWS 站点 mywebsite.com 添加 CName 记录。记录应该是: @ CNAME mywebsite.us-east-1.elb.amazon
我目前正在开发一个相当大的多层应用程序,该应用程序将部署在海外。虽然我希望它在解聚后不会折叠或爆炸,但我不能 100% 确定这一点。因此,如果我知道我可以请求日志文件,以准确找出问题所在以及原因,那就
我使用以下命令从我的网络摄像头录制音频和视频 gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=30/1
我刚刚开始使用 ffmpeg 将视频分割成图像。我想知道是否可以将控制台输出信息保存到日志文件中。我试过“-v 10”参数,也试过“-loglevel”参数。我在另一个 SO 帖子上看到使用 ffmp
我想针对两个日期查询我的表并检索其中的记录。 我这样声明我的变量; DECLARE @StartDate datetime; DECLARE @EndDate datetime; 并像这样设置我的变量
在 javascript 中,我可以使用简单的 for 循环访问对象的每个属性,如下所示 var myObj = {x:1, y:2}; var i, sum=0; for(i in myObj) s
最近加入了一个需要处理大量代码的项目,我想开始记录和可视化调用图的一些流程,让我更好地理解一切是如何组合在一起的。这是我希望在我的理想工具中看到的: 每个节点都是一个函数/方法 如果一个函数可以调用另
如何使用反射在F#中创建记录类型?谢谢 最佳答案 您可以使用 FSharpValue.MakeRecord [MSDN]创建一个记录实例,但是我认为F#中没有任何定义记录类型的东西。但是,记录会编译为
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
我是 Sequelize 的新手并且遇到了一些语法问题。我制作了以下模型: // User sequelize.define('user', { name: { type: DataTyp
${student.name} Notify 这是我的output.jsp。请注意,我已经放置了一个链接“Notify”以将其转发到 display.jsp 上。但我不确定如何将 Stud
例如,这是我要做的查询: server:"xxx.xxx.com" AND request_url:"/xxx/xxx/xxx" AND http_X_Forwarded_Proto:(https O
我一直在开发大量 Java、PHP 和 Python。所有这些都提供了很棒的日志记录包(分别是 Log4J、Log 或logging)。这在调试应用程序时有很大帮助。特别是当应用程序 headless
在我的Grails应用程序中,我异步运行一些批处理过程,并希望该过程记录各种状态消息,以便管理员以后可以检查它们。 我考虑过将log4j JDBC附加程序用作最简单的解决方案,但是据我所知,它不使用D
我想将进入 MQ 队列的消息记录到数据库/文件或其他日志队列,并且我无法修改现有代码。是否有任何方法可以实现某种类似于 HTTP 嗅探器的消息记录实用程序?或者也许 MQ 有一些内置的功能来记录消息?
如果我有一条包含通用字段的记录,在更改通用字段时是否有任何方法可以模仿方便的 with 语法? 即如果我有 type User = // 'photo can be Bitmap or Url {
假设我有一个名为 Car 的自定义对象。其中的所有字段都是私有(private)的。 public class Car { private String mName; private
当记录具有特定字段时,我需要返回 true 的函数,反之亦然。示例: -record(robot, {name, type=industrial, ho
我是一名优秀的程序员,十分优秀!