- 博客(130)
- 收藏
- 关注
原创 分治实现LeetCode 23题:合并K个排序链表
纪念第一道没有看题解做出来的困难题分治思想+归并排序实现合并K个排序链表由于是实现一连串已经排序的链表,所以第一时间想到了归并排序又由于是实现多个链表的总排序,为了减少时间复杂度又想到了分治思想,这一题中也就是二分法做了这么多天的题总算有点进步class Solution { public ListNode mergeKLists(ListNode[] list...
2020-04-26 14:46:03
355
原创 LeetCode 面试题16.03 交点
又是暴力破解的一天而且还是个数学渣刚看到这一题的时候真的崩溃,稍微列了一下公式后好一点,但又发现按这种解法情况太多但是自己分的情况跪着也要分完下面先列一下思路:我采用的是最普通的点斜式方程 计算两根直线斜率,判断两根线段的斜率是否存在 都存在 判断是否平行 平行但不重合 此时一定没有交点,返回空数组 ...
2020-04-12 20:08:53
276
转载 MATLAB2017a点击图标后闪退的解决方法
问题描述:win10经历了一次更新之后,再次开机的时候MATLAB无法打开,点击图标之后,图标在任务栏闪现一下就消失了。打开任务管理器之后,发现在后台进程中存在,但是cpu占有率为0解决方法:网上的添加系统变量,更改兼容性等方法都尝试过,都对我没有用,最后是采用了如下的方法解决了问题在bin\win64目录下双击运行vcredist_x64.exe;在bin\win64\vc90目录下...
2019-04-16 12:47:41
10286
12
转载 pycharm无法识别turtle库中函数名的解决方法
原因pycharm和turtle库有冲突,不能自己识别出turtle下的方法:解决方案找到turtle.py,对turtle库的源码进行如下修改:注释掉原来的_ all_,新增如下:# __all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions +# _tg_utiliti...
2019-04-09 21:15:09
1792
1
原创 C++——深入构造函数
1.转换构造函数转换构造函数就是单个参数的构造函数转换构造函数的作用是将其他类型转换为类类型类的构造函数只有一个参数是非常危险的,因为编译器可以使用这种构造函数把参数的类型隐式转换为类类型 2.初始化和赋值在初始化语句中的等号不是运算符。编译器对这种语法有特殊的解释而赋值使用的语法为Test& Test::operator = (const Test& other)
2017-02-09 16:22:16
586
原创 C++——构造函数和析构函数初识
1.构造函数构造函数是特殊的成员函数创建类类型的新对象时,系统会自动调用构造函数构造函数是为了保证对象的每个数据成员都被正确初始化①构造函数的特点函数名和类名完全相同不能定义构造函数的类型(返回类型),也不能使用void通常情况下构造函数应声明为公有函数,否则它不能向其他函数那样显式地调用构造函数被声明为私有时有特殊的用途②默认构造函数:不带参数的构造函数如
2017-02-09 10:28:53
619
原创 C++——类和对象
1.类的声明类是一种用户自定义类型,声明形式如下:Class 类名称{Public: 公有成员(外部接口)Private: 私有成员Protected: 保护成员}; 2.公有、私有、保护成员公有成员(public)公有成员是在public关键字的后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数私
2017-02-08 20:58:56
513
原创 C++——面向对象编程初步了解
一、什么是面向对象面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。 二、面向对象的优点1、易维护 采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。2、质量高 在设计时,可重用现有的,在以前的项目的
2017-02-07 18:58:36
578
原创 C++基础——C++对C的升级
1.定义的声明与C语言相比,C++中更加强调语言的“实用性”,所有的变量都可以在需要使用时再定义例如:for(int i = 0; i < 10; i++){for(int j = 0; j < 10; j++){ ......}}两个计数变量都可以在使用的时候定义,这时他们的作用范围只在这个循环中,循环结束就将被释放 2.register关键词的变化
2017-02-06 20:04:46
455
转载 C语言——删除字符串中的指定子串
问题描述: 在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串【输出】 result
2016-12-25 21:20:26
11372
转载 C语言——不使用循环判断一个数是否为2的N次方
对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { printf("yes!\n);
2016-12-24 22:38:42
1284
原创 C语言——以尽量高效的方法用”*”打印出一个空心正方形
请以尽量高效的方法用”*”打印出一个空心正方形,num为边长。void print_square(int num);#include int main(){ int x,y,num; printf("please input the num:\n"); scanf("%d",&num); for(x = 0; x < num; x++)
2016-12-23 22:46:32
5377
1
原创 C语言——约瑟夫环
设编号1,2…..n的n个人围坐在一圈,任选一个正整数作为报数的上限值,从第k个人开始按顺时针报数,数到m的那个人出局,他的顺时针方向下一位又从1开始报数,数到m的那个人又出局,以此类推,直到所有人出局为止,请用链表写一个函数找出每轮的幸存者。(假设n个人已经插入链表)struct{int num;struct node *next;}typedef struct node N
2016-12-22 22:44:16
835
原创 C语言——链表倒数结点
编写一个程序,实现输出链表中倒数第K个结点ListNode * FindKthToTail(LisNode *head, unsigned int k){ if(head == NULL || K == 0) //入口参数检查!!! { return NULL; } int i; ListNode *pAhead
2016-12-21 22:17:14
492
原创 C语言——堆和栈的区别
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据
2016-12-20 22:38:50
466
原创 Linux C——shell基础入门
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、v
2016-12-18 16:18:20
545
原创 C语言——用联合体判断大小端
用联合体判断大小端,大端返回0,小端返回1 union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}
2016-12-17 23:04:05
489
原创 C语言——用联合体判断大小端
用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}
2016-12-17 22:59:10
665
原创 C语言——用联合体判断大小端
用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}
2016-12-17 22:57:53
473
原创 C语言——用联合体判断大小端
用联合体判断大小端,大端返回0,小端返回1union w { int a; char b; } u;int judge(){u test;test.a = 1;if(test.b == 1){ return 1;}else{return 0;}}
2016-12-17 22:54:32
977
转载 嵌入式系统——ARM Cortex-A8体系结构
第2章 ARM Cortex-A8体系结构1.ARM微处理器采用RISC架构的ARM微处理器一般具有如下特点:1)体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令执行速度更快;4)大多数数据操作都在寄存器中完成;5)寻址方式灵活简单,执行效率高;
2016-12-16 23:05:00
1934
原创 C语言——把自己编程实现字符串函数strstr
char * my_strstr(char *str, char *ptr){ if(str == NULL || ptr == NULL) return NULL; int i; int j; int flag = 0; for(i = 0; i < strlen(str); i++) { for(j = 0; j < strl
2016-12-15 23:20:43
644
转载 C语言——用递归算法判断数组是否为一个递增数组
1.递归一定要有退出条件,否则将无限循环。2.关于递归的返回值是要注意的。下面列举两种方法,原理相同,递归判断。方法1:bool charge(int p[],int n){ static int m=0; //这个一定要定义为static,否则每次调用都是从0开始。 if(m == n-1) return true; else
2016-12-14 21:47:35
3590
原创 C语言——合并两个递增排序链表
struct node{int num;struct node *next;};typedef struct node Node;typedef Node * Link;Link Merge(Link head1, Link head2){If(head1 == NULL) return head2;If(head2 == NULL) return head1;Link m
2016-12-13 23:08:34
1141
原创 C语言——运算符操作时的类型转换问题
以取反操作为例,来看下面这一个例子:下面程序的输出结果是多少 250 #include int main(){unsigned char a = 0xA5;unsigned char b = ~ a >> 4 + 1;printf(“b = %d\n”, b);return 0;}解析:考察两个知识点:一是类型转换问题,二是运算符优先级的问题,优先级~
2016-12-12 22:21:42
480
原创 C语言——蛇形代码的例子
编写一个程序,输出类似的蛇形代码:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 #include #include int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,//round是转的圈数,
2016-12-10 20:46:16
945
原创 C语言——系统函数和库函数的区别
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再
2016-12-10 20:41:06
9384
转载 Linux C——网络编程传输文件的实验
原先对文件总是有一种莫名的抗拒,原因未知,最近做东西的时候需要用套接字传送文件、图片之类的东西,没办法,只好硬着头皮上了。做了一个小实验,下面是几点心得:(1)网上查了一些资料,发现其实套接字传送文件和传输文字没什么区别的,因为它只负责发送和接收,而对到底是什么样类型的数据是并不感冒的(以字节为单位传输)(2)发送文件时,需要先把文件以二进制格式打开,读取到内存中,然后再发
2016-12-07 22:19:18
969
原创 Linux C——TCP、UDP的区别和分别使用的场合
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现
2016-12-06 22:30:53
2249
转载 Linux C——详解TCP协议的三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:
2016-12-05 22:08:05
407
原创 Linux C——IP地址分类的详解
IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、和C类这三类地址用于TCP/IP节点,其它两类D类和E类被用于特殊用途。A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。1. A类地
2016-12-05 22:06:42
1420
原创 C语言——内存分配的方式
1、全局变量和静态变量(static变量),是由编译器自动分配和释放的,初始化的全局变量和静态变量放在同一块内存区中,未初始化的全局变量和静态变量则放在相邻的另外一块内存区中。2、栈,是由编译器自动分配和释放的,主要是函数体的地址,参数和局部变量,静态变量不包含其中,操作方式类似于数据结构中的栈。3、堆,是由程序员手动完成申请和释放的,像malloc和new,程序员没有手动释放的话,当程序
2016-12-02 23:16:43
388
原创 C语言——printf函数的结合顺序
下面用一个例子来看:int arr[] = {6,7,8,9,10};int *ptr = arr;*(ptr++)+=123;printf(“ %d %d ”, *ptr, *(++ptr));分析:int *ptr = arr;此时指针指向第一个元素,即6*(ptr++)+=123;此时指针ptr自加表示地址加一,指向第二个元素printf(“ %d
2016-12-02 23:10:42
854
原创 C语言——
下面这段程序f(657, 789)输出的值为多少int f(int x, int y){return (x&y)+((x^y)>>1)}分析:题目中的&和^都是位运算,所以我们有必要研究数据的对位情况。任何数据只有3中情况。1) 0 与 0对应2) 0 与 1对应3)1 与 1对应那么它们分别什么诀窍呢?举例子来说:0101 和1101 也就是x和y分别为
2016-11-30 21:39:25
366
转载 C语言——使用scanf函数时需要注意的问题
转自:http://blog.csdn.NET/wayne92 scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题[cpp] view pla
2016-11-29 22:45:18
1138
原创 C语言——strlen(a)的值为多少
#include "stdio.h"#include "string.h"int main(){ char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0;}此题看上去真的很简单,但是却鲜有人答对。答案是255。别惊讶,我们先分析
2016-11-28 21:57:32
4334
原创 无线传感网——调制解调技术
调制解调技术调制就是用基带信号去控制载波信号的某个或几个参量的变化,将信息荷载在其上形成已调信号传输,而解调是调制的反过程,通过具体的方法从已调信号的参量变化中将恢复原始的基带信号。调制的种类很多,分类方法也不一致。按调制信号的形式可分为模拟调制和数字调制。用模拟信号调制称为模拟调制;用数据或数字信号调制称为数字调制。按被调信号的种类可分为脉冲调制、正弦波调制和强度调制(如对非相干
2016-11-27 21:24:44
1574
转载 IEEE 802.15.4和ZigBee
IEEE 802.15.4网络简介IEEE 802.15.4网络是指在一个POS内使用相同无线信道并通过IEEE 802.15.4标准相互通信的一组设备的集合,又名LR-WPAN网络。在这个网络中,根据设备所具有的通信能力,可以分为全功能设备(full-function device , FFD)和精简功能设备(reduced-function device , RFD)。FFD设备之间以
2016-11-26 21:45:28
10301
转载 Linux C——段错误bug的调试
转自:http://blog.chinaunix.NET/space.PHP?uid=317451&do=blog&id=92412方法一和二适用与像我一样的新手,:-)我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是
2016-11-25 23:06:54
585
原创 SDH的基本概念
一、SDH的概念 SDH(Synchronous Digital Hierarchy,同步数字体系)是一种将复接、线路传输及交换功能融为一体、并由统一网管系统操作的综合信息传送网络,是美国贝尔通信技术研究所提出来的同步光网络(SONET)。国际电话电报咨询委员会(CCITT)(现ITU-T)于1988年接受了SONET 概念并重新命名为SDH,使其成为不仅适用于光纤也适
2016-11-25 23:03:23
6864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人