刷题笔记
编程菜菜_要努力
努力成为大神ing
展开
-
归并排序-leetcode148
归并排序--链表原创 2023-03-19 15:29:47 · 104 阅读 · 0 评论 -
快速排序算法(leetcode题解分析)
快排算法leetcode题解代码分析原创 2023-01-01 16:31:52 · 247 阅读 · 0 评论 -
回溯法实现全排列(leetcode46)
回溯算法实现全排列leetcode原创 2022-09-12 15:59:42 · 267 阅读 · 0 评论 -
c++ 优先队列(priority_queue)
c++的优先队列原创 2022-07-02 15:23:20 · 349 阅读 · 0 评论 -
堆排序(heapsort)
堆是一种数据结构,分为大根堆(大顶堆)、小根堆(小顶堆)这种数据结构需要满足下面2个特点:(1)是一棵完全二叉树(2)根节点的值大于子节点的值(大根堆)/ 根节点的值小于子节点的值(小根堆)即所有父节点的值都大于/小于子节点的值完全二叉树:从上到下,从左到右依次填充。分为两种:1)最后一层没有满,最后一层的结点都要在左边 2)最后一层满了,全满才行,即完全二叉树堆上各结点下标的关系1)如下图所示,跟结点下标从0开始,假设某个结点下标为iparent = (i-1)/2 根节点原创 2021-12-01 21:00:33 · 792 阅读 · 0 评论 -
树相关题目总结
1. 二叉树的中序遍历94. 二叉树的中序遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/中序遍历:遍历节点顺序为 左根右使用栈来存储节点步骤:1)遍历树的左节点-->入栈--> 一直找到最后一层的节点,该值即为中序遍历的第一个值2)获取该节点的右节点重复上述步骤/** * Definition for a binary tree node. * struct TreeNode {原创 2022-01-09 22:18:05 · 369 阅读 · 0 评论 -
二分法问题总结
1. leetcode33 搜索旋转排序数组解题:( 时间复杂度O(logN),空间复杂度O(1) )二分法,找到中间值,不断缩小搜索范围,下一搜索范围是中间值左侧或右侧旋转排序数组的特点是局部有序,中间值左/右,有一侧一定是有序的,通过有序区间可以判断出target值是否在该区间内,如果不在,则在另外区间---> 这样就缩小了搜索范围该题目需要注意数组中元素个数为0或1。class Solution {public: int search(vector<原创 2022-01-02 23:46:45 · 561 阅读 · 0 评论 -
快速排序法
流程:1. 先确定一个基准位pivot,一般选最左边元素2. 把比基准位值小的元素放到基准位左边,比基准位大的元素放到基准位右边3. 对左右区间分别进行递归排序,重复上述步骤#include <iostream>#include <vector>using namespace std;void quick_sort(vector<int>& arr, int low, int high) { int i, j, pivot; //原创 2022-01-02 15:56:20 · 461 阅读 · 0 评论 -
刷题指南-链表类问题总结
1、链表类问题中使用while循环,循环条件怎么定看是否需要处理最后一个结点,如果需要的话,即while(node!=nullptr){} 如果要使用node->next!=nullptr来做判断,前面一定要有node!=nullptr,只有node不为空,才能取到node->next;否则会报错2. 从中间将链表拆成两个(找链表中点的方法)使用快慢指针ListNode* split(ListNode* head) { ListNode* fast = head;原创 2021-12-25 19:44:03 · 647 阅读 · 0 评论 -
最长公共子序列(leetcode1143题)
题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。解题要点该题使用动态规划的方法,要先找出状态转移方程画图如下所示,如果两个字符串 str1=“abcde”, str2=“ace”,将两个字符串写到表格的行列中1)每个字符和空字符公共长度为02)从左上角开始,如果行列两个字符相同,到该字符为止的最长公共子序列=左上角数字+1;如果不同,到该字符为止的公共子序列=max(左,上) + 1class Sol原创 2021-12-03 22:28:54 · 106 阅读 · 0 评论