Merge branch 'master' of git.rrricardo.top:jackfiled/leetcode
This commit is contained in:
commit
098e5ca766
|
@ -130,4 +130,7 @@ mod p49_group_anagrams;
|
||||||
mod p202_happy_number;
|
mod p202_happy_number;
|
||||||
mod p219_contains_duplicate_ii;
|
mod p219_contains_duplicate_ii;
|
||||||
mod p128_longest_consecutive_sequence;
|
mod p128_longest_consecutive_sequence;
|
||||||
|
mod p228_summary_ranges;
|
||||||
|
mod p56_merge_intervals;
|
||||||
|
mod p57_insert_interval;
|
||||||
mod p452_minimum_number_of_arrows_to_burst_balloons;
|
mod p452_minimum_number_of_arrows_to_burst_balloons;
|
|
@ -4,7 +4,7 @@
|
||||||
pub struct Solution {}
|
pub struct Solution {}
|
||||||
|
|
||||||
// submission codes start here
|
// submission codes start here
|
||||||
use std::{collections::HashSet, ops::Add};
|
use std::collections::HashSet;
|
||||||
|
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn is_happy(n: i32) -> bool {
|
pub fn is_happy(n: i32) -> bool {
|
||||||
|
@ -13,7 +13,6 @@ impl Solution {
|
||||||
let mut n = Solution::calculate_square(n);
|
let mut n = Solution::calculate_square(n);
|
||||||
|
|
||||||
while n != 1 {
|
while n != 1 {
|
||||||
dbg!(n);
|
|
||||||
if s.contains(&n) {
|
if s.contains(&n) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
54
src/problem/p228_summary_ranges.rs
Normal file
54
src/problem/p228_summary_ranges.rs
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
/**
|
||||||
|
* [228] Summary Ranges
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn summary_ranges(nums: Vec<i32>) -> Vec<String> {
|
||||||
|
let mut result = vec![];
|
||||||
|
|
||||||
|
if nums.len() == 0 {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut begin = nums[0];
|
||||||
|
let mut end = nums[0];
|
||||||
|
|
||||||
|
for i in 1..nums.len() {
|
||||||
|
if nums[i] == end + 1 {
|
||||||
|
end += 1;
|
||||||
|
} else {
|
||||||
|
result.push(if begin == end {
|
||||||
|
format!("{}", begin)
|
||||||
|
} else {
|
||||||
|
format!("{}->{}", begin, end)
|
||||||
|
});
|
||||||
|
|
||||||
|
begin = nums[i];
|
||||||
|
end = nums[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push(if begin == end {
|
||||||
|
format!("{}", begin)
|
||||||
|
} else {
|
||||||
|
format!("{}->{}", begin, end)
|
||||||
|
});
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_228() {
|
||||||
|
}
|
||||||
|
}
|
47
src/problem/p56_merge_intervals.rs
Normal file
47
src/problem/p56_merge_intervals.rs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/**
|
||||||
|
* [56] Merge Intervals
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn merge(intervals: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
|
||||||
|
let mut intervals: Vec<(i32, i32)> = intervals.iter().map(|p| (p[0], p[1])).collect();
|
||||||
|
|
||||||
|
intervals.sort_unstable();
|
||||||
|
|
||||||
|
let mut result: Vec<(i32, i32)> = vec![intervals[0]];
|
||||||
|
let mut last = 0;
|
||||||
|
|
||||||
|
for i in 1..intervals.len() {
|
||||||
|
let (begin, end) = intervals[i];
|
||||||
|
let (last_begin, last_end) = result[last];
|
||||||
|
|
||||||
|
if begin <= last_end {
|
||||||
|
result[last].0 = result[last].0.min(begin);
|
||||||
|
result[last].1 = result[last].1.max(end);
|
||||||
|
} else {
|
||||||
|
result.push(intervals[i]);
|
||||||
|
last += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.iter().map(|p| vec![p.0, p.1]).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_56() {
|
||||||
|
assert_eq!(
|
||||||
|
vec![vec![1, 6], vec![8, 10], vec![15, 18]],
|
||||||
|
Solution::merge(vec![vec![1, 3], vec![2, 6], vec![8, 10], vec![15, 18]])
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
49
src/problem/p57_insert_interval.rs
Normal file
49
src/problem/p57_insert_interval.rs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
/**
|
||||||
|
* [57] Insert Interval
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn insert(intervals: Vec<Vec<i32>>, new_interval: Vec<i32>) -> Vec<Vec<i32>> {
|
||||||
|
let (mut left, mut right) = (new_interval[0], new_interval[1]);
|
||||||
|
|
||||||
|
let mut result = vec![];
|
||||||
|
let mut placed = false;
|
||||||
|
|
||||||
|
for interval in intervals {
|
||||||
|
if interval[1] < left {
|
||||||
|
result.push(interval);
|
||||||
|
} else if interval[0] > right {
|
||||||
|
if !placed {
|
||||||
|
result.push(vec![left, right]);
|
||||||
|
placed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push(interval);
|
||||||
|
} else {
|
||||||
|
left = left.min(interval[0]);
|
||||||
|
right = right.max(interval[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !placed {
|
||||||
|
result.push(vec![left, right]);
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_57() {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user