C/C++
yansj_sc
种一棵树的最佳时机是十年前,其次是现在。
展开
-
【leetcode】多数元素
问题描述:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2解题思路:利用快排的划分思想,partition出的第n/2个位置,必然为原始数组中的...原创 2020-02-22 22:28:05 · 241 阅读 · 0 评论 -
【leetcode】最长回文子串
问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路:参考这篇文章加深了对动态规划算法的了解和使用:https://www.cnblogs.com/coderJiebao/p/A...原创 2018-08-11 14:38:12 · 154 阅读 · 0 评论 -
【leetcode】递增的三元子序列
问题描述:给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例...原创 2018-08-11 10:08:04 · 464 阅读 · 0 评论 -
【leetcode】字谜分组--未完成
问题描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan&qu原创 2018-08-05 13:06:17 · 443 阅读 · 0 评论 -
【leetcode】三数之和
题目描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]提交...原创 2018-07-29 15:35:32 · 398 阅读 · 0 评论 -
【leetcode】缺失数字
问题描述给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?提交代码思路:连续整数,先计算出所有数字的和,然后在逐一减去数组中的数字,剩下的就是缺失的那个...原创 2018-07-14 14:49:07 · 374 阅读 · 0 评论 -
【leetcode】有效的括号
题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输...原创 2018-07-13 22:28:14 · 287 阅读 · 0 评论 -
【leetcode】3的幂
问题描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false提交代码思路:递归判断n/3是否是3的幂次方,提交代码如下:bool isPowerOfThree(int n) { if(n==1) { re...原创 2018-07-06 21:25:14 · 2434 阅读 · 0 评论 -
【leetcode】计数质数
题目描述统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。提交代码如下:代码思路:如果借助辅助空间,代码提交会超时。因此代码中开辟了一个与n大小相同的数组来标识数组下标的数字是否是质数。因为非质数一定可以标示为所有质数的乘积,即n=(a1^n1)*(a2^n2)*...,n为非负整数,因此判断是否是...原创 2018-07-05 23:00:57 · 816 阅读 · 0 评论 -
【leetcode】相交链表
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。 注意:如果两个链表没...原创 2018-08-14 22:57:33 · 167 阅读 · 0 评论 -
【转】leetcode错误提示:member access within misaligned address 0x000000000031 for type 'struct ListNode'
转载地址:https://blog.csdn.net/lv1224/article/details/54675703错误提示:member access within misaligned address 0x000000000031 for type 'struct ListNode', which requires 8 byte alignment原因分析:在链表中,链表节点定...转载 2018-08-11 23:07:56 · 12616 阅读 · 1 评论 -
【leetcode】子集(动态规划解法)
问题描述:给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解题思路:动态规划思路:自上而下分析(问题分解),自下而上解决(根据子问...原创 2019-03-05 13:07:50 · 759 阅读 · 0 评论 -
【leetcode】从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 解题思路:1、首先需要了解前序遍历和中序遍历的特征,前序遍历...原创 2018-08-18 23:52:36 · 1442 阅读 · 0 评论 -
【leetcode】奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...原创 2018-08-13 22:14:38 · 367 阅读 · 0 评论 -
leetcode练习算法时遇到的调试bug的解决记录
指针使用越界:1、free(): invalid next size (fast): 0x0000000001d294d0 ***使用malloc方法动态分配指针指向的空间,实际在使用时超出了声明的空间,因此指针被污染了。出错代码如下: struct TreeNode*** temp=(struct TreeNode ***)malloc(sizeof(struct TreeN...原创 2018-08-18 13:21:57 · 2986 阅读 · 0 评论 -
【leetcode】二叉树的锯齿形层次遍历
问题描述:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]解题思路:...原创 2018-08-18 13:12:28 · 649 阅读 · 0 评论 -
【leetcode】中序遍历二叉树
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:先用递归的思路写一个代码如下:/** * Definition for a binary tree node. * struct TreeNode {...原创 2018-08-15 23:48:13 · 377 阅读 · 0 评论 -
【leetcode】无重复字符的最长子串
问题描述:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。解题思原创 2018-08-07 23:39:07 · 164 阅读 · 0 评论 -
【leetcode】两数相加
题目描述:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:常规思...原创 2018-08-11 23:10:07 · 201 阅读 · 0 评论 -
【leetcode】帕斯卡三角形
问题描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]提交代码思路:观察每行与前一行的关系,可以发现后一行比前一行多1个数字,并且位置关系也是明确的,并且是一个对称的数组。提...原创 2018-07-11 20:51:57 · 747 阅读 · 0 评论 -
【leetcode】Fizz Buzz
问题描述写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "原创 2018-07-03 23:29:41 · 253 阅读 · 0 评论 -
【leetcode】将有序数组转换为二叉搜索树
题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-07-16 22:51:40 · 581 阅读 · 0 评论 -
(MFC实现)TCP服务器设计 - 每个客户连接对应一个线程
如果服务器支持线程,那么对于客户/服务进程的架构我们可以采取一个线程处理一个客户连接的设计方案。也就是每当有新的连接请求到达服务器时,服务器会新开一个子线程来专门处理这个连接的信息传递;这种方法类似于服务器为每个客户连接fork一个子进程,但这相对来说更轻量级。转载 2014-04-27 07:48:46 · 6282 阅读 · 2 评论 -
TCP服务器设计范式 - 每个客户连接对应一个线程
如果服务器支持线程,那么对于客户/服务进程的架构我们可以采取一个线程处理一个客户连接的设计方案。也就是每当有新的连接请求到达服务器时,服务器会新开一个子线程来专门处理这个连接的信息传递;这种方法类似于服务器为每个客户连接fork一个子进程,但这相对来说更轻量级。1.首先初始化服务器信息(部分代码):[cpp] view plaincopy转载 2014-04-27 07:32:34 · 1317 阅读 · 0 评论 -
改变Static Text字体颜色
1. 打开资源视图。2. 双击打开STATIC所在的对话框。3. 修改STATIC的ID属性,这里假设为IDC_STATIC1。4.为对话框添加类,假设为CTestTextDialog.5. 选择对话框,在属性面板上点击消息,并选择WM_CTLCOLOR。6.在对话框对应类的CPP中会新增下面的代码:HBRUSH DataSummaryDlg::OnCtlColor(C转载 2014-04-07 14:02:22 · 3414 阅读 · 0 评论 -
MFC中timer 的使用
首先,要设置定时器。在init中(或其他的初始化函数里),调用函数[cpp] view plaincopyUINT SetTimer( UINT nIDEvent,//定时器标记, UINT nElapse,//间隔时间 void ( CALLBACK* lpfnTimer ) (HWND, UINT,转载 2014-03-01 08:51:32 · 721 阅读 · 0 评论 -
gethostname获取主机IP地址
WSADATA wsaData; if(WSAStartup(MAKEWORD(2,2),&wsaData)) { AfxMessageBox(_T("failed to load winsock!"),MB_OK|MB_ICONSTOP); return -1; } char hostname[50]; int err = gethostname(hostname,sizeo原创 2014-02-21 10:15:06 · 4469 阅读 · 0 评论 -
Winsock 的启动和终止
由于 Winsock 的服务是以动态链接库 Winsock DLL 形式实现的,所以必须先调用WSAStartup 函数对 Winsock DLL 进行初始化,协商 Winsock 的版本支持,并分配必要的资源。如果在调用 Winsock 函数之前,没有加载 Winsock 库,则会返回 SOCKET_ERROR错误,错误的信息是 WSANOTINITIALIZED。WSAStartup 函数原创 2014-01-17 13:40:19 · 2015 阅读 · 0 评论 -
网络编程 发送数据 时宽字节和字符转换
从CSDN论坛看到的,我也遇到了同样的问题。多谢楼主!症状描述:很简单的例子,结果每次都只能接收到第一个字符,123就只收到1,abc就只收到a服务端CSocket s,c; AfxSocketInit(); BOOL bOptVal = TRUE; int bOptLen = sizeof(BOOL); s.Socket(); s.SetSockOp原创 2014-01-09 10:40:09 · 1377 阅读 · 0 评论 -
链表翻转(面试题目 C语言实现)
题目:给出一个链表和一个数k,比如,链表为1→2→3→4→5→6,k=2,则翻转后2→1→6→5→4→3,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→6→5,用程序实现。我的思路是:采用插入法翻转链表。#include#includetypedef struct node{ int data; struct node *next;};void原创 2015-03-24 20:21:05 · 645 阅读 · 0 评论 -
字符串移位(C语言实现,面试题目)
题目:编写程序,在原字符串中把字符串尾部的m个字符移动到字符串的头部,要求:长度为n的字符串操作时间复杂度为O(n),空间复杂度为O(1)。 例如,原字符串为”Ilovebaofeng”,m=7,输出结果为:”baofengIlove”。思路:借鉴了July的旋转字符串的思路。分别将字符串的两部分逆序,然后再对整个字符串逆序。#include#include#includevoid原创 2015-03-24 21:12:18 · 3124 阅读 · 0 评论 -
【leetcode】汉明距离
问题描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解题思路:先计算xy的异或,然后再计算异或...原创 2018-07-09 22:36:54 · 402 阅读 · 0 评论 -
【leetcode】 位1的个数
题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 00000000000000000000000010000000以前了解过这...原创 2018-07-08 22:09:35 · 245 阅读 · 0 评论 -
【leetcode】罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做...原创 2018-07-08 12:58:56 · 324 阅读 · 0 评论 -
LeetCode 206 Reverse Linked List
Reverse a singly linked list.click to show more hints.Hint:A linked list can be reversed either iteratively or recursively. Could you implement both?递归实现 runtime 64ms(感觉递归的效率真的好低!)原创 2015-06-26 17:13:26 · 411 阅读 · 0 评论 -
LeetCode 1.Two Sum
Two SumGiven an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the targ原创 2015-06-22 21:37:49 · 487 阅读 · 0 评论 -
struct和union在内存所占空间
1.声明一个空的struct 或者union,它们所占的空间都是1B.2.union所占的空间大小是成员变量中所占空间最大的那个变量的字节数。比如union test{ short s; char c;};那么union的在内存中占的长度是sizeof(short)=2B。3.struct所占内存空间的大小则是所有成员变量的sizeof的总和。但是原创 2015-04-27 15:31:42 · 3341 阅读 · 0 评论 -
回文判断
#include#include#includebool isPalindrome(char *str, int len);int main(){ char arr[100]; gets_s(arr); puts(arr); int len = strlen(arr); if (isPalindrome(arr, len)) { printf("palindrome!\原创 2015-04-07 16:12:21 · 559 阅读 · 0 评论 -
单词翻转(C语言实现)
题目:单词翻转。输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,输入“I am a student.”,则输出“student. a am I”。思路:先将整个句子翻转,然后再通过空格区分每个单词的范围,再将这个单词翻转。#include#include#includevoid RotateS原创 2015-03-24 22:00:39 · 7466 阅读 · 1 评论 -
动态规划之最大子段和问题
原文:http://www.cnblogs.com/snake-hand/archive/2011/11/26/2454431.html问题描述:给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。依此定义,所求的最优值为: 例如,当(a1,a2 , a3 , a4 , a5 ,a6)转载 2013-11-01 21:50:15 · 1052 阅读 · 0 评论