41. 缺失的第一个正数
This commit is contained in:
parent
56e2221c76
commit
da982f01aa
37
src/main.rs
37
src/main.rs
|
@ -1,33 +1,32 @@
|
|||
struct Solution;
|
||||
impl Solution {
|
||||
pub fn find_anagrams(s: String, p: String) -> Vec<i32> {
|
||||
if s.len() < p.len() {
|
||||
return vec![];
|
||||
pub fn first_missing_positive(mut nums: Vec<i32>) -> i32 {
|
||||
for i in 0..nums.len(){
|
||||
if nums[i] <= 0 || nums[i] > nums.len() as i32 {
|
||||
continue;
|
||||
}
|
||||
let mut res = vec![];
|
||||
let mut p_count = [0; 26];
|
||||
let mut s_count = [0; 26];
|
||||
for i in 0..p.len() {
|
||||
p_count[(p.as_bytes()[i] - b'a') as usize] += 1;
|
||||
let mut temp = nums[i];
|
||||
nums[i] = -1;
|
||||
while temp > 0 && temp <= nums.len() as i32 {
|
||||
let temp2 = nums[temp as usize - 1];
|
||||
nums[temp as usize - 1] = temp;
|
||||
if temp == temp2 {
|
||||
break;
|
||||
}
|
||||
for i in 0..p.len() {
|
||||
s_count[(s.as_bytes()[i] - b'a') as usize] += 1;
|
||||
temp = temp2;
|
||||
}
|
||||
for i in p.len()..s.len() {
|
||||
if p_count == s_count {
|
||||
res.push((i - p.len()) as i32);
|
||||
}
|
||||
s_count[(s.as_bytes()[i] - b'a') as usize] += 1;
|
||||
s_count[(s.as_bytes()[i - p.len()] - b'a') as usize] -= 1;
|
||||
println!("{:?}", nums);
|
||||
for i in 0..nums.len(){
|
||||
if nums[i] != (i as i32 + 1) {
|
||||
return i as i32 + 1;
|
||||
}
|
||||
if p_count == s_count {
|
||||
res.push((s.len() - p.len()) as i32);
|
||||
}
|
||||
res
|
||||
nums.len() as i32 + 1
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let sl = Solution::find_anagrams("cbaebabacd".to_string(), "abc".to_string());
|
||||
let sl = Solution::first_missing_positive(vec![1]);
|
||||
println!("{:?}", sl);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue