提交 7d47d475 编写于 作者: 梦境迷离's avatar 梦境迷离

rust leetcode 475

上级 55ce952c
......@@ -7,128 +7,75 @@ Leetcode Rust 实现
无注明,默认是LeetCode系列
* [面试题 22 链表中倒数第k个节点](src/interview_22.rs)
## 树
* [1351 统计有序矩阵中的负数](src/leetcode_1351.rs)
* [面试题 55 - I 二叉树的深度](src/interview_55_1.rs)
* [面试题 04.02 最小高度树](src/interview_04_02.rs)
* [938 二叉搜索树的范围和](src/leetcode_938.rs)
* [617 合并二叉树](src/leetcode_617.rs)
* [面试题 54 二叉搜索树的第k大节点](src/interview_54.rs)
* [面试题 32 - II. 从上到下打印二叉树 II](src/interview_32_2.rs)
* [面试题 02.02 返回倒数第 k 个节点值](src/interview_02_02.rs)
## 链表&栈&队列
* [面试题 55 - I 二叉树的深度](src/interview_55_1.rs)
* [面试题 22 链表中倒数第k个节点](src/interview_22.rs)
* [面试题 06 从尾到头打印链表](src/interview_06.rs)
* [面试题 24 反转链表](src/interview_24.rs)
* [面试题 25 合并两个排序的链表](src/interview_25.rs)
* [876 链表的中间结点](src/leetcode_876.rs)
* [83 删除排序链表中的重复元素](src/leetcode_83.rs)
* [面试题 02.02 返回倒数第 k 个节点值](src/interview_02_02.rs)
* [面试题 03.04 化栈为队](src/interview_03_04.rs)
* [面试题 09 用两个栈实现队列](src/interview_09.rs)
* [20 有效的括号](src/leetcode_20.rs)
* [1021 删除最外层的括号](src/leetcode_1021.rs)
* [933 最近的请求次数](src/leetcode_933.rs)
* [面试题 04.02 最小高度树](src/interview_04_02.rs)
## 数组&矩阵
* [1351 统计有序矩阵中的负数](src/leetcode_1351.rs)
* [1380 矩阵中的幸运数](src/leetcode_1380.rs)
* [1385 两个数组间的距离值](src/leetcode_1385.rs)
* [977 有序数组的平方](src/leetcode_977.rs)
* [561 数组拆分 I](src/leetcode_561.rs)
* [905 按奇偶排序数组](src/leetcode_905.rs)
* [1403 非递增顺序的最小子序列](src/leetcode_1403.rs)
* [1281 整数的各位积和之差](src/leetcode_1281.rs)
* [面试题 58 - II 左旋转字符串](src/interview_58_2.rs)
* [1365 有多少小于当前数字的数字](src/leetcode_1365.rs)
* [1342 将数字变成 0 的操作次数](src/leetcode_1342.rs)
* [1313 解压缩编码列表](src/leetcode_1313.rs)
* [面试题 17 打印从1到最大的n位数](src/interview_17.rs)
* [面试题 05 替换空格](src/interview_05.rs)
* [1221 分割平衡字符串](src/leetcode_1221.rs)
* [面试题 06 从尾到头打印链表](src/interview_06.rs)
* [938 二叉搜索树的范围和](src/leetcode_938.rs)
* [1021 删除最外层的括号](src/leetcode_1021.rs)
* [面试题 24 反转链表](src/interview_24.rs)
* [1252 奇数值单元格的数目](src/leetcode_1252.rs)
* [1323 6 和 9 组成的最大数字](src/leetcode_1323.rs)
* [617 合并二叉树](src/leetcode_617.rs)
* [461 汉明距离](src/leetcode_461.rs)
* [709 转换成小写字母](src/leetcode_709.rs)
* [1304 和为零的N个唯一整数](src/leetcode_1304.rs)
* [804 唯一摩尔斯密码词](src/leetcode_804.rs)
* [832 翻转图像](src/leetcode_832.rs)
* [面试题 25 合并两个排序的链表](src/interview_25.rs)
* [1370 上升下降字符串](src/leetcode_1370.rs)
* [面试题 03.04 化栈为队](src/interview_03_04.rs)
* [1051 高度检查器](src/leetcode_1051.rs)
* [728 自除数](src/leetcode_728.rs)
* [面试题 01.01 判定字符是否唯一](src/interview_01_01.rs)
* [1385 两个数组间的距离值](src/leetcode_1385.rs)
* [面试题 54 二叉搜索树的第k大节点](src/interview_54.rs)
* [面试题 09 用两个栈实现队列](src/interview_09.rs)
* [面试题 16.07 最大数值](src/interview_16_07.rs)
* [977 有序数组的平方](src/leetcode_977.rs)
* [1380 矩阵中的幸运数](src/leetcode_1380.rs)
* [933 最近的请求次数](src/leetcode_933.rs)
* [561 数组拆分 I](src/leetcode_561.rs)
* [1374 生成每种字符都是奇数个的字符串](src/leetcode_1374.rs)
* [1403 非递增顺序的最小子序列](src/leetcode_1403.rs)
* [557 反转字符串中的单词 III](src/leetcode_557.rs)
* [999 可以被一步捕获的棋子数](src/leetcode_999.rs)
* [292 Nim 游戏](src/leetcode_292.rs)
* [1160 拼写单词](src/leetcode_1160.rs)
* [1413 逐步求和得到正数的最小值](src/leetcode_1413.rs)
* [面试题 32 - II. 从上到下打印二叉树 II](src/interview_32_2.rs)
* [944 删列造序](src/leetcode_944.rs)
* [9 回文数](src/leetcode_9.rs)
* [13 罗马数字转整数](src/leetcode_13.rs)
* [876 链表的中间结点](src/leetcode_876.rs)
* [500 键盘行](src/leetcode_500.rs)
* [14 长公共前缀](src/leetcode_14.rs)
* [20 有效的括号](src/leetcode_20.rs)
* [14 最长公共前缀](src/leetcode_14.rs)
* [35 搜索插入位置](src/leetcode_35.rs)
* [905 按奇偶排序数组](src/leetcode_905.rs)
* [1207 独一无二的出现次数](src/leetcode_1207.rs)
* [38 外观数列](src/leetcode_38.rs)
* [58 最后一个单词的长度](src/leetcode_58.rs)
* [665 非递减数列](src/leetcode_665.rs)
* [66 加一](src/leetcode_66.rs)
* [67 二进制求和](src/leetcode_67.rs)
* [83 删除排序链表中的重复元素](src/leetcode_83.rs)
\ No newline at end of file
* [475 供暖器](src/leetcode_475.rs)
\ No newline at end of file
use std::cmp::{max, min};
use crate::pre_structs::Solution;
///475. 供暖器
impl Solution {
//8ms 2.3MB
pub fn find_radius(houses: Vec<i32>, heaters: Vec<i32>) -> i32 {
let mut heaters = heaters;
heaters.sort();
let mut res = 0i32;
for h in houses.iter() {
match heaters.binary_search(h) {
Err(should_insert_index) => {
let left_dist = if should_insert_index > 0 {
h - heaters[should_insert_index - 1]
} else {
i32::max_value()
};
let right_dist = if should_insert_index <= heaters.len() - 1 {
heaters[should_insert_index] - h
} else {
i32::max_value()
};
res = max(res, min(left_dist, right_dist));
}
_ => {}
}
}
res
}
//双指针 4ms 2.4MB
pub fn find_radius2(houses: Vec<i32>, heaters: Vec<i32>) -> i32 {
let mut houses = houses;
let mut heaters = heaters;
houses.sort();
heaters.sort();
let mut r = 0;
let mut i = 0usize;
for &h in houses.iter() {
while i < heaters.len() && h > heaters[i] {
i += 1;
}
if i == 0 {
r = max(r, heaters[i] - h);
} else if i == heaters.len() {
return max(r, houses[houses.len() - 1] - heaters[heaters.len() - 1]);
} else {
r = max(r, min(heaters[i] - h, h - heaters[i - 1]));
}
}
r
}
}
#[cfg(test)]
mod test {
use crate::pre_structs::Solution;
#[test]
fn find_radius() {
let ret = Solution::find_radius([1, 2, 3, 4].to_vec(), [1, 4].to_vec());
assert!(ret == 1);
let ret = Solution::find_radius2([1, 2, 3, 4].to_vec(), [1, 4].to_vec());
assert!(ret == 1);
}
}
......@@ -44,6 +44,7 @@ pub mod leetcode_292;
pub mod leetcode_35;
pub mod leetcode_38;
pub mod leetcode_461;
pub mod leetcode_475;
pub mod leetcode_500;
pub mod leetcode_557;
pub mod leetcode_561;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册