27、移除元素

/*
* @Author: 零泽
* @LastEditors: 零泽
* @Description:
* @Date: 2021/04/25 11:03:16
* @LastEditTime: 2021/04/25 11:08:30
* @FilePath: \vscode\leetcode\27.移除元素.cpp
*/
/*
* @lc app=leetcode.cn id=27 lang=cpp
*
* [27] 移除元素
*/

// @lc code=start
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
/**
* @description:
* @event:
* @param {vector<int>} &nums
* @param {int} val
* @return {*}
*/
int removeElement(vector<int> &nums, int val) {
int len = nums.size();
for (int i = 0; i < len; i++) {
if (nums.at(i) == val) {
for (int j = i; j < len - 1; j++) {
nums.at(j) = nums.at(j + 1);
}
i--;
len--;
}
}
return len;
}
//一遍过
// 113/113 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 89.61 % of cpp submissions (8.4 MB)
//这次成绩很好,但是用的算法是和26一样的,可26速度就很慢,不是很懂
};
// @lc code=end

28、28.实现-str-str

/*
* @Author: 零泽
* @LastEditors: 零泽
* @Description:
* @Date: 2021/04/25 11:08:59
* @LastEditTime: 2021/04/25 11:17:13
* @FilePath: \vscode\leetcode\28.实现-str-str.cpp
*/
/*
* @lc app=leetcode.cn id=28 lang=cpp
*
* [28] 实现 strStr()
*/

// @lc code=start
#include <iostream>
#include <string.h>
using namespace std;
class Solution {
public:
int strStr(string haystack, string needle) {
int haylen = haystack.length();
int neelen = needle.length();
if (neelen == 0) {
return 0;
}
for (int i = 0; i < haylen - neelen + 1; i++) {
if (haystack.substr(i, neelen) == needle) {
return i;
}
}
return -1;
}
// 79/79 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 20.19 % of cpp submissions (6.9 MB)
};
// @lc code=end

35、搜索插入位置

/*
* @Author: 零泽
* @LastEditors: 零泽
* @Description:
* @Date: 2021/04/25 11:17:50
* @LastEditTime: 2021/04/25 11:41:13
* @FilePath: \vscode\leetcode\35.搜索插入位置.cpp
*/
/*
* @lc app=leetcode.cn id=35 lang=cpp
*
* [35] 搜索插入位置
*/

// @lc code=start
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
int searchInsert(vector<int> &nums, int target) {
if (nums.at(0) > target) {
nums.push_back(nums.at(nums.size() - 1));
for (int i = nums.size() - 1; i > 0; i--) {
nums.at(i) = nums.at(i - 1);
}
nums.at(0) = target;
return 0;
}
for (int i = 0; i < nums.size(); i++) {
if (nums.at(i) == target) {
return i;
}
if (nums.at(i) > target && nums.at(i - 1) < target) {
nums.push_back(nums.at(nums.size() - 1));
for (int j = nums.size() - 1; j >= i + 1; j--) {
nums.at(j) = nums.at(j - 1);
}
nums.at(i) = target;
return i;
}
}
if (nums.at(nums.size() - 1) < target) {
nums.push_back(target);
return nums.size() - 1;
}
return -1;
}
// 62/62 cases passed (4 ms)
// Your runtime beats 88.27 % of cpp submissions
// Your memory usage beats 74.81 % of cpp submissions (9.3 MB)
// TODO:代码有些复杂,有空的时候优化一下代码
};
// @lc code=end

38、外观数列

/*
* @Author: 零泽
* @Date: 2021/04/26 10:02:00
* @LastEditors: 零泽
* @LastEditTime: 2021/04/26 15:52:53
* @FilePath: \vscode\leetcode\38.外观数列.cpp
* @Description:
*/
/*
* @lc app=leetcode.cn id=38 lang=cpp
*
* [38] 外观数列s
*/

// @lc code=start
#include <iostream>
#include <string.h>
using namespace std;
class Solution {
public:
/**
* @Author: 零泽
* @param {int} n
* @return {*}
* @description:
* 利用pos记录每个相同区段的数字开头,和array.at(pos)不相同时开始正式操作
* 使用递归来减少空间的使用
*/
string countAndSay(int n) {
if (n == 1) {
return "1";
}
string array = countAndSay(n - 1);
string temp;
int pos = 0;
for (int i = 1; i < array.length(); i++) {
if (array.at(i) != array.at(pos)) {
temp.push_back(i - pos + '0');
temp.push_back(array.at(i - 1));
pos = i;
}
}
temp.push_back(array.length() - pos + '0');
temp.push_back(array.at(array.length() - 1));
return temp;
}
// 30/30 cases passed (4 ms)
// Your runtime beats 82.52 % of cpp submissions
// Your memory usage beats 91.98 % of cpp submissions (6.3 MB)
};
// @lc code=end