算法
wyy_blog
彩笔程序员https://github.com/wyy01
展开
-
leetcode每日一题:从前序和中序遍历构造二叉树
- 遍历pIndex操作优化:将中序遍历序列遍历一次,将数值和下标存储在unordered_map里- 递归时需要传入的参数:1: 前序遍历序列2:中序遍历序列3:前序遍历的左边界4:前序遍历的右边界5:中序遍历的左边界6:中序遍历的右边界7:存储中序遍历数值和下标的映射关系的unordered_map【来自leetcode 题解视频】...原创 2020-05-23 16:16:31 · 295 阅读 · 0 评论 -
排序算法——冒泡排序(C++实现)
冒泡排序的中心思想:将数组中的相邻元素进行两两比较,若逆序则交换。#include <iostream>#define N 10using namespace std;int main(){ int arr[N]={2,5,1,3,4,10,9,8,7,6}; int i,j,k; int temp; cout<<"排序前:"<...原创 2018-07-03 14:45:49 · 679 阅读 · 0 评论 -
排序算法——选择排序(C++实现)
选择排序中心思想:在arr[0]-arr[N-1]中找出最小的数,与a[0]对换在arr[1]-arr[N-1]中找出最小的数,与a[1]对换在arr[2]-arr[N-1]中找出最小的数,与a[2]对换#include <iostream>#define N 10using namespace std;int main(){ int arr[N]={20,5,56,...原创 2018-07-04 15:16:17 · 2938 阅读 · 0 评论 -
leetcode 237删除链表中的节点(只给定要求被删除的节点)
难点在于只给定了一个参数,而不是链表+要删除的节点 2个参数思路:将该节点的下一个节点的值替换当前值,然后删除后面一个节点 注意这里的前提条件是链表至少包含两个元素/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next...原创 2018-09-28 11:23:17 · 386 阅读 · 0 评论 -
bug系列:free(): invalid next size (fast): 0x00000000027d5dd0 ***/leetcode 389找不同
题目:错误提示详情:思路 :建立一个频率数组存放t中每个字母出现的频率,然后减去s中该字母出现的频率 最后剩余频率不为0的字母就是添加的那个字母。错误代码:class Solution {public: char findTheDifference(string s, string t) { vector<int> freq={0};...原创 2018-10-17 20:06:45 · 443 阅读 · 0 评论 -
最大公约数算法——欧式算法
输入:正整数x,y输出:最大公约数步骤1:x整除以y,记余数为r步骤2:若r==0则最大公约数为y,算法结束步骤3:否则将y作为新x,将r作为新y,重复上述步骤unsigned int gcd(unsigned int x,unsigned y){ unsigned int r; while(true) { r=x%y; if(r==0) return ...原创 2019-03-05 22:04:35 · 890 阅读 · 0 评论 -
c++归并排序
/*** 递归:样本量发生了变化,但是过程可以复用* 写递归时先写base case,即递归退出条件* 压栈:父函数中所有的变量及行号信息都会压入栈,根据此信息依次返回父函数**//*** 归并排序:先用递归将左边的部分按顺序拍好,再将右边的部分按顺序排好* 归并:两个下标分别指向两部分的第一个数据,选较小的入辅助空间* 复杂度 :T{N} = 左部分T{N/2} + 右部...原创 2019-08-08 14:56:43 · 326 阅读 · 0 评论