![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
刷题记录
戎码关山
你在炫耀诗和远方,父母却尚在苟且
展开
-
110. 平衡二叉树
平衡二叉树 两个子树的高度差指的是,左右子树的深度的差的绝对值,比如下图中根节点3的左右子树高度分别为1和2,所以该节点左右子树的高度差就是1.原创 2020-12-04 08:42:21 · 187 阅读 · 0 评论 -
204. 计数质数
题目 寻找[2,n]的质数是很常见的问题,主要有三种方法,现总结如下: 枚举法 枚举法思路简单,但是要注意这几点: 1、0和1应该要特判,除非在判断质数时压根就不让0,1参与选择,直接从2开始 2、为了判断n是否是质数,只需要枚举i=2至i=根号n,但是在程序中应该表现为i*i <= n,素数条件如果从i*i<=x改为i<=sqrt(x)就过不了,因为sqrt函数运行速度很慢 class Solution { public: int countPrimes(int n) {原创 2020-12-03 09:53:02 · 277 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。 注意:假如该字符串中的第一个非空格字符不是一个有效整数字原创 2020-11-21 09:16:39 · 218 阅读 · 0 评论 -
541. 反转字符串 II
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例: 输入: s = “abcdefg”, k = 2 输出: “bacdfeg” 对字符串末尾的位置和当前位置+k-1取最小值 class Solution { public: string reverseStr(string s, int k) {原创 2020-11-20 09:58:15 · 226 阅读 · 0 评论 -
557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例: 输入:“Let’s take LeetCode contest” 输出:“s’teL ekat edoCteeL tsetnoc” 我使用了原地变换的思维,找到一个单词,使用双指针将单词原地逆序 class Solution { public: string reverseWords(string s) { int len = s.length(); int start;原创 2020-11-20 09:02:59 · 198 阅读 · 0 评论 -
27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,1,2,2,3,0,4,2]原创 2020-11-19 09:14:53 · 141 阅读 · 0 评论 -
1472. 设计浏览器历史记录
解题思路 1、利用栈的思想 2、void visit(string url) 从当前页跳转访问 url 对应的页面 。执行此操作会把浏览历史前进的记录全部删除。百思不得其解就是因为这一句没有理解,意为只要visit()新的界面,那么当前界面前的界面就会 被删除,使得新页面直接在原页面的上方。 代码 class BrowserHistory { public: int pos; int top; string history[5001]; BrowserHistory(str原创 2020-06-09 19:40:28 · 366 阅读 · 0 评论 -
1471. 数组中的 k 个最强值
解题思路 1、使用双指针! 2、一定清晰问题解决的逻辑顺序 3、最重要的是审题,我总是心太急,不愿意认真读题,结果导致花费了更多的时间。 例如:中位数 是一个有序整数列表中处于中间位置的值。形式上,如果列表的长度为 n ,那么中位数就是该有序列表(下标从 0 开始)中位于 ((n - 1) / 2) 的元素。 我最初还分奇偶考虑问题,太蠢了。 代码 class Solution { public: vector<int> getStrongest(vector<int>&am原创 2020-06-09 15:44:13 · 285 阅读 · 0 评论 -
LeetCode:1470. 重新排列数组
方法一 我们通过观察可以看到在答案数组中 ,如果下标是偶数i,就是nums中i/2的元素,如果下标是奇数i,逐个递增n之后的n个元素 class Solution { public: vector<int> shuffle(vector<int>& nums, int n) { vector<int> re; int e = n; for(int i = 0;i < n*2;i++) {原创 2020-06-09 07:50:36 · 294 阅读 · 0 评论 -
14. 最长公共前缀
相关Stack Overflow解答 解题思路 注意第一步要先判断是否是空vector,并且不能再这之前有任何多余的操作,如变量声明等。 否则会报错:Line 923: Char 9: runtime error: reference binding to null pointer of type ‘std::__cxx11::basic_string<char, std::char_tra...原创 2020-04-11 17:08:22 · 195 阅读 · 0 评论 -
13. 罗马数字转整数
我的题解就是暴力ifelse class Solution { public: int romanToInt(string s) { int len = s.size(); int sum = 0; for(int i = 0;i < len;i++) { if(s[i] == 'I') ...原创 2020-04-07 21:32:59 · 121 阅读 · 0 评论 -
9. 回文数
负数必定不是回文数,反转后再判断,注意x的值已经发生变化 执行用时 : 12 ms , 在所有 C++ 提交中击败了 85.56% 的用户 内存消耗 : 5.8 MB , 在所有 C++ 提交中击败了 100.00% 的用户 class Solution { public: bool isPalindrome(int x) { if(x < 0) ...原创 2020-04-07 09:02:36 · 152 阅读 · 0 评论 -
【7】整数反转
主要特判+循环(可以不用判断是正负数以及末尾是否有0) 执行用时 : 0 ms , 在所有 C++ 提交中击败了 100.00% 的用户 内存消耗 : 6 MB , 在所有 C++ 提交中击败了 100.00% 的用户 class Solution { public: long long reverse(long long x) { int max = 0x7fffffff...原创 2020-04-06 20:27:33 · 263 阅读 · 0 评论