- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 找工作准备系列1
找工作算法准备1 2018-7-31日1、不要忽视暴力解法当没有很好的思路的时候 暴力解法无疑是最好的一种方法了,这种方法复杂度虽然很高 但是是一种思路总比没有任何思路要好的多;在暴力解法的基础上在看看能不能优化2、优化算法 2.1遍历常用的算法思路 索引指针遍历 递归分治 回溯算法 动态规划 贪...
2018-07-31 21:52:17 135
原创 leetcode 95 96 不同的二叉搜索树
动态规划刷题1、leetcode96 不同的二叉搜索树描述:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?思路: 就是利用二叉树的性质 根节点选定i之后 那么它的左子树的结点个数应该是 i -1;右子树的结点的个数应该是 n-i; 它是个和的形式 因为它有i个分配方式;左右子树的根节点数目不一样 对应不同的情况; 那么 它就应该累加起来;...
2018-07-26 10:31:04 475
原创 leetcode 84 柱状图的最大面积
题目:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/description/给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。...
2018-07-25 17:02:38 362
原创 网络编程 1、TCP客户端服务端的编程模型
客户端调用虚列 调用socket函数创建套接字 调用connect链接直服务端 调用I/O函数(write/read)与服务器进行通讯 调用close关闭套接字 //步骤一:创建socket int sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) { perror("sockert error"); ...
2018-07-21 21:09:05 759
原创 2、基于TCP协议的socket编程
1、服务端/************************************************************************* > File Name: src/time_tcp_server.c > Author: sicaolong > Mail: [email protected] > Crea...
2018-07-21 20:55:57 203
原创 (三)剑指offer31 把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:1、将数组进行排序;排序的规则就是 两个数字组成的字符串按照从小到大的方式排序,也就是 sort调用的必须是静态函数;static bool cmp(int a,int b) ...
2018-07-17 11:59:20 93
原创 (三)剑指offer 从1到整数n的当中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思路:1、从低位往高位查找,i=1;从第一位开始;2、设置几个变量 high:表示第i位左边的数 也就是高...
2018-07-10 11:29:32 82
原创 (三)剑指offer 29 连续数组的最大和
题目:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1);思路:使用动态规划的方式来解决这个问题;动态规划:1、初始化:dp[0]=a...
2018-07-09 10:11:28 67
原创 (三)剑指offer 28 最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:用快速排序的思想;求出每一个数字的序号;int partition(vector<int>&nums,int left,int right) { int pivort=nums[left]; while...
2018-07-09 10:02:46 65
原创 (三)剑指offer 27 数组中出现次数超过一半的数字
思路:1、最直观的一种方法就是:用快速排序的思想 找出位于中间位置的那个数;时间复杂度为 nlogn;然后就是再查找这个数的个数是不是大于总个数的一般;2、就是设置两个变量times=0;res=nums[0];如果说遇到的下一个数与res不同 则times--;class Solution {public: //方法一:times比较个数的巧方法; int MoreThanHa...
2018-07-05 11:20:22 90
原创 (三)剑指offer 26 将二叉搜索树转化成一个排序的双向链表
思路:设置一个指针变量 为pLastNode=nullptr;为链表的最后一个节点;递归的方式逐渐找到它的前一个节点;按照中序遍历的方式;先往左子树递归查找;if(cur->left)pLastNode=helper(cur->left,pLastNode);再处理根节点;cur->left=pLastNode;if(pLastNode)pLastNode ->right=...
2018-07-03 09:39:54 133
原创 (三)剑指Office 24复杂链表的赋值
思路:该思路应该分为三步:1、将链表的每一个结点都复制一遍 ,并且放在连接在原来的结点的后面;cloneNode(pHead); void CloneNode(RandomListNode* pHead) { if(!pHead)return ; RandomListNode* pNode=pHead; while(pNode) { R...
2018-07-02 23:42:10 117
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人