
C++
oomoomoooq
个人博客:https://kkalts.github.io/f7.github.io/
欢迎访问
展开
-
119 力扣杨辉三角 Ⅱ
1.模拟 动态规划118的状态转移公式 dp[i][j] = dp[i-1][j-1] + dp[i-1][j]可以看到可将[i-1],[i]省掉 只返回指定行// dp[i][j] = dp[i-1][j-1] + dp[i-1][j]vector<int> getRow(int rowIndex) { vector<int> a; ...原创 2019-12-19 11:23:48 · 167 阅读 · 0 评论 -
力扣 121 买卖股票的最佳时间
用了一种暴力算法 过于暴力 超时了class Solution {public: int maxProfit(vector<int>& prices) { //找最大 最小值 最小值下标在最大值下标之前 即将第一位最大拿出讨论即可 vector<int>::iterator it; ...原创 2019-12-12 11:25:43 · 198 阅读 · 0 评论 -
力扣 27 移除元素
与26相似 基本相同 只是由于26是数组之间元素比较 27是数组元素与传入参数比较 因此两指针起始位置不同 整体思路相同从不等方面思考(记录保留)i慢指针j快指针不等时两指针指向同一位置 两指针都移动相等时 快指针移动 慢指针不动 待到再相等时快指针位置元素覆盖慢指针位置元素,将相等项删除即可代码class Solution {public: int removeEleme...原创 2019-11-26 19:43:16 · 241 阅读 · 0 评论 -
力扣 26 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2019-11-25 18:02:12 · 198 阅读 · 0 评论 -
力扣 876 链表中间结点
一开始延续回文链表向量数组的写法 只返回了结点值 且忘记向量可以为结点类型 导致出错本题其实很简单 想的有点复杂了1.向量数组class Solution {public: ListNode* middleNode(ListNode* head) { vector<ListNode*> a= {head}; while(a.back()...原创 2019-11-24 19:55:03 · 203 阅读 · 0 评论 -
力扣 237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: ...原创 2019-11-24 18:07:26 · 182 阅读 · 0 评论 -
力扣 234 回文链表
快慢指针找中点(注意奇偶)分开反转后半链比较(以后半链为主)class Solution {public: bool isPalindrome(ListNode* head) { ListNode *p=new ListNode(-1);//预先指针 ListNode *fast=p; ListNode *low=p; ...原创 2019-11-24 17:03:25 · 317 阅读 · 0 评论 -
力扣 206反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL1.利用外部条件 容器2.双指针 迭代class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *p...原创 2019-11-24 16:27:04 · 184 阅读 · 0 评论 -
力扣 203 移除链表元素
一开始想太简单了没有考虑到已经遍历到的结点无法删除有三种方法:1.在原表基础上删除 要定义指向当前结点前一结点的指针/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next...原创 2019-11-23 17:56:02 · 255 阅读 · 0 评论 -
力扣 2 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-11-23 17:06:05 · 241 阅读 · 0 评论 -
删除字符串中所有指定字符
多种方法: vector<char>vec; vector<char>::iterator ite; vector<char>::iterator p; vec.push_back('A'); vec.push_back('A'); vec.push_back('A'); vec.push_back('B')...原创 2019-11-23 17:05:06 · 440 阅读 · 0 评论 -
力扣 160相交链表
一开始想到的暴力解法忽略了两链表不等长时,都从第一个元素开始遍历会失败解法1.暴力解法指针遍历链表,但是要记得若两链表不等长则不能只遍历一遍,则需要两个while形成两层遍历,则一链表为基,从起始遍历另一链表,相互比较。即对链表A中的每一个结点ai ,遍历整个链表 B 并检查链表 B 中是否存在结点和ai相同。class Solution {public: ListNode *g...原创 2019-11-20 15:49:45 · 182 阅读 · 0 评论 -
力扣 114环形链表
第一种超出时间限制且不知是否符合题意/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi...原创 2019-11-13 20:47:00 · 190 阅读 · 0 评论