自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 LeetCode 剑指Offer 28. 对称的二叉树

题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。0 <= 节点个数 <= 1000示例输入:root = [1,2,2,3,4,4,3]输出:true输入:root = [1,2,2,null,3,null,3]输出:false题解1. 递归C++/** * Definition for a binary tree node. * struct TreeNode { * int val; *

2022-03-31 11:08:33 134

原创 LeetCode 剑指Offer 27. 二叉树的镜像

题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。0 <= 节点个数 <= 1000示例输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]题解1. 递归C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tre

2022-03-30 12:56:08 515

原创 LeetCode 剑指Offer 25. 合并两个排序的链表

题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。0 <= 链表长度 <= 1000示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解法1. 递归C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *

2022-03-29 16:32:18 1296

原创 LeetCode 剑指Offer 24. 反转链表

题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。0 <= 节点个数 <= 5000示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解法1. 迭代,双指针C++/** * Definition for singly-linked list. * struct ListNode { * int val; * List

2022-03-28 12:30:20 1599

原创 LeetCode 剑指Offer 22.链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解法1. 递归C++/** * Definition for singly-linked list. * stru

2022-03-27 17:08:09 1644

原创 LeetCode 剑指Offer 21. 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。1、0 <= nums.length <= 500002、0 <= nums[i] <= 10000示例输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。解法1. 遍历,拼接数组遍历数组,数组1存奇数,数组2存偶数,拼接数组1和数组2C++class Solution {publi

2022-03-26 17:32:56 816

原创 LeetCode 剑指Offer 18.删除链表的结点

题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。题目保证链表中节点的值互不相同若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点示例输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.输入: head = [4,5,1,9], val = 1输出:

2022-03-25 12:54:59 819

原创 LeetCode 剑指Offer 17. 打印从1到最大的n位数

题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。用返回一个整数列表来代替打印n 为正整数示例输入: n = 1输出: [1,2,3,4,5,6,7,8,9]解法1. 不考虑大数C++class Solution {public: vector<int> printNumbers(int n) { vector<int> res;

2022-03-24 10:36:51 332

原创 LeetCode 剑指Offer 15. 二进制中1的个数

题目描述编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量)请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在下面的 示例 3 中,输入表示有符号整数 -3输入必须是长度为 32 的 二进制串示例示例 1

2022-03-23 12:55:41 89

原创 C++ 位运算 与& 或| 异或^ 非~ 左移<< 右移>>

位与 &1 & 1 = 11 & 0 = 00 & 0 = 0位或 |1 | 1 = 11 | 0 = 10 | 0 = 0位异或 ^1 ^ 1 = 01 ^ 0 = 10 ^ 0 = 0位非 ~~1 = 0~0 = 1位左移 <<二进制高位舍去一位位右移 >>二进制低位舍去一位代码 uint16_t x = 56; // 计算机中数值均以补码形式存储 uint16_t y =

2022-03-23 12:40:22 942

原创 SublimeText 学习记录

下载SublimeText官网下载地址设置安装控制面板【shift + ctrl + p】弹出搜索框,输入【Install Package Control】并点击安装,安装成功后会出现【Preferences/Package Control】安装汉化插件【shift + ctrl + p】ChineseLocalizations【Help/Language】切换语言分屏【View/Layout】优化软件在默认情况下,会记录和打开历史文件关闭设置:【Preferences/Settin

2022-03-23 10:04:27 325

原创 LeetCode 剑指Offer 11. 旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。示例输入:[3,4,5,1,2]输出:1输入:[3,4,5,1,2]输出:1解法二分查找C++class Solution {public: int minArra

2022-03-22 10:46:25 1164

原创 C++ STL unordered_map

std::unordered_map::count()如果k匹配容器内元素的键,则该函数返回1,否则返回0,一般用来判断元素的存在性std::unordered_map::operator[]mapped_type& operator[] ( const key_type& k );mapped_type& operator[] (key_type&& k);公共成员函数,用来访问元素如果k匹配容器中元素的键,则该函数返回对其映射值的引用。如果k不匹配

2022-03-21 14:19:13 453

原创 LeetCode 剑指Offer 10.2. 青蛙跳台阶问题

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。0 <= n <= 100示例输入:n = 2输出:2输入:n = 7输出:21输入:n = 7输出:21解法经推导归纳得到,此题为斐波那契数列的变形,i.e.将斐波那契数列的前两项由【0, 1】改为【1, 1】递归C++class Solutio

2022-03-21 13:30:37 475

原创 LeetCode 剑指Offer 10.1. 斐波那契数列

题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例输入:n = 2输出:1输入:n = 5输出:5解法1

2022-03-20 16:36:06 803

原创 sumo 下载 安装

下载sumo官网下载地址安装1. 运行安装程序(自动设置环境变量)运行【sumo-win64-1.12.0.msi】安装到【D:\ProgramFiles(x86)\Eclipse\Sumo】勾选类似【add path…】的选项,会自动创建如下两图的环境变量2. 压缩包解压(手动设置环境变量)将【sumo-win64-1.12.0.zip】解压缩到【D:\ProgramFiles(x86)\Eclipse\sumo-1.12.0】设置sumo环境变量:win+e,右击计算机,属性,高

2022-03-19 21:38:08 3746

原创 LeetCode 剑指Offer 09. 用两个栈实现队列

1. 题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )1 <= values <= 10000最多会对 appendTail、deleteHead 进行 10000 次调用2. 示例输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],

2022-03-19 17:56:56 90

原创 LeetCode 刷题目录

剑指Offer简单03. 数组中重复的数字05. 替换空格06. 从尾到头打印链表09. 用两个栈实现队列中等困难

2022-03-18 15:24:27 638

原创 LeetCode 剑指Offer 06. 从尾到头打印链表

1. 题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。0 <= 链表长度 <= 100002. 示例输入:head = [1,3,2]输出:[2,3,1]3. 解法3.1. 递归Java递归边界条件:指针指向单链表尾结点递归推进段:将指针指向单链表下一结点递归返回段:将单链表结点值输入数组/** * Definition for singly-linked list. * public class ListNode { * i

2022-03-18 15:15:08 110

原创 递归 算法 编程技巧

定义递归(recursion),函数在其定义中调用自己特点递归能显著减少代码量结构通常,递归需要有边界条件,递归前进段和递归返回段当边界条件不满足时,递归前进;当边界条件满足时,递归返回示例倒叙输出单链表值/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; }

2022-03-18 14:44:34 778

原创 LeetCode 剑指Offer 05. 替换空格

1. 题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。0 <= s 的长度 <= 100002. 示例输入:s = “We are happy.”输出:“We%20are%20happy.”3. 解法3.1. 遍历C++class Solution {public: string replaceSpace(string s) { string res; for (char c: s) {

2022-03-18 12:03:04 86

原创 LeetCode 剑指Offer 03. 数组中重复的数字

1. 题目描述找出数组中重复的数字数组 nums,长度 n∈[2, 100000],数组元素类型 int,取值范围 [0, n-1]。数组中某些数字重复,但不知有几个数字重复,也不知每个数字重复几次。找出数组中任意一个重复数字。2. 示例输入: [2, 3, 1, 0, 2, 5, 3]输出:2 或 33. 解法3.1. 哈希表C++执行用时: 40 ms内存消耗: 26.8 MBclass Solution {public: int findRepeatNumber(v

2022-03-17 21:53:24 630

原创 Git学习笔记

1. Git1.1. Git概述Git是一个免费的、开源的分布式版本控制系统从个人开发过渡到团队协作,需要版本控制(毕设论文版本的笑话)Git工作机制工作区:存放代码的本地磁盘目录(代码能删)暂存区:工作区代码添加到暂存区(代码能删)本地库:暂存区代码提交到本地库(生成历史版本了,代码删不掉了,除非不push到远程库)远程库:本地库代码推送到远程库(生成历史版本了,代码删不掉了,除非删库跑路)代码托管中心是基于网络服务器的远程代码仓库,i.e.远程库Git远程库如下:互联网Gi

2022-03-16 16:22:24 341

原创 ns-3 2.7 信息入口:结点类

下面介绍ns-3中网络结点的实现载体,C++Node类,特别是在脚本中如何通过Node类来获取一些重要的网络信息除了物理层表示信道的Channel类,一个结点中的应用层Application类,传输层IpL4Protocol类,网络层Ipv4/6类,链路层NetDevice类的(子类)对象都存储在及结点Node对象中,因此,当人们想获取某个协议层的信息时,从Node对象出发总能得到想要的结果当然,ns-3脚本中的一些对象可以直接从容器获取,如应用存储容器ApplicationContainer,网络设备

2022-03-14 15:30:01 504

原创 ns-3 2.6 网络是怎么模拟的

在物理世界中,网络系统的运行很多时候都是一个随时间变化的连续过程,ns-3把这些连续变化的网络过程按照时间顺序分割成一些列的离散事件,一个完整的ns-3网络模拟过程就是按照这些时间顺序执行这些离散事件下面这段代码是T1时刻执行的部分源程序,这里的计划时间操作使用的是Simulator::Schedule()...

2022-03-13 18:08:35 166 2

原创 ns-3 2.5 再探脚本:常用技术解析

2.5.1 脚本助理:助手类ns-3中类名以Helper结尾的C++类是助手类助手类的设计初衷是,通过屏蔽实现细节,来降低脚本编写的复杂度ns-3每个模块都有自己的助手类,这些助手类的源代码位于【src/<模块名>/helper】,例如,为结点安装TCP/IP协议栈的【InternetStackHelper】在【src/internet/helper/internet-stack-helper.h】中定义2.5.2 参数输入:属性变量1. 属性ns-3中,属性是网络模拟中的用户可配

2022-03-13 17:41:16 579 1

原创 ns-3 third.cc

示例脚本:【examples/tutorial/third.cc】用ns-3脚本搭建一个Wi-Fi无线网络模拟了一个混合场景,包含PPP,CSMA和Wi-Fi1. 头文件头文件命名规范:"<模块名>-module.h"头文件所在目录:【build/ns3】#include "ns3/core-module.h" // 定义了ns-3的核心功能(如模拟事件、事件调度),必须包括#include "ns3/point-to-point-module.h" // PPP模块#in

2022-03-12 11:35:06 4293

原创 计算机网络 子网掩码

【subnet mask】【子网掩码】【网络掩码】【地址掩码】产生背景:子网掩码是在IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,通过子网掩码将A、B、C三类地址划分为若干子网,从而显著提高了IP地址的分配效率,有效解决了IP地址资源紧张的局面子网掩码用途的几种说法:将IP划分成网络地址和主机地址指明一个IP地址的哪些位标识的是主机所在的子网,哪些位标识的是主机的位掩码屏蔽IP地址的一部分,以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在广域网上子网掩码

2022-03-10 14:17:56 926

原创 ns-3 first.cc

示例脚本:【examples/tutorial/first.cc】模拟了一个有线网络,包含两个结点链路层使用PPP传输分组/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public Li

2022-03-10 13:22:33 71

原创 ns-3 模拟脚本

模拟脚本的完整编写顺序【1-9】1. 头文件头文件命名规范:"<模块名>-module.h"头文件所在目录:【build/ns3】常用头文件如下:#include "ns3/core-module.h" // 定义了ns-3的核心功能(如模拟事件、事件调度),必须包括#include "ns3/network-module.h" // 定义了ns-3的基本网络组件(如网络结点、分组和地址等),必须包括#include "ns3/internet-module.h" //

2022-03-10 13:22:02 4247

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除