自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冰殇的博客

「Talk is cheap. Show me the code」

  • 博客(194)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 位运算---不用任何比较判断找出两个数中的最大值

【题目】  给定两个32位整数a和b,返回a和b中较大的一个。要求不能使用比较判断。【基本思路】 方法一。得到a - b的符号就可以知道a和b哪一个大了。具体过程参照如下代码:int getMax1(int a, int b){ int c = a - b; int scA = sign(c); int scB = flip(scA); return a * sc

2017-09-06 20:44:17 4236

转载 CSDN-markdown语法之如何使用LaTeX语法编写数学公式

目录目录正文标记公式行内公式块级公式上标和下标分数表示各种括号根号表示省略号矢量表示间隔空间希腊字母特殊字符关系运算符集合运算符对数运算符三角运算符微积分运算符逻辑运算符戴帽符号连线符号箭头符号几个例子其它特殊字符字体种类参考文献正文CSDN-markdown编辑器支持基于MathJax编写LaTeX数学公式。MathJax是一款

2017-09-06 20:01:36 403

原创 位运算---计算整数的N次方

为了表述方便,现在使用例子来说明。假设一个整数是10,如何快速的求解10的75次方。 75的二进制形式为1001011.10的75次方 = 1064∗108∗102∗10110^{64}*10^8*10^2*10^1在这个过程中,我们先求出10110^1,然后根据10110^1求出10210^2,再根据10210^2求出10410^4,……,最后再根据103210^{32}求出106410^{

2017-09-06 19:53:55 2750

原创 位运算---只使用位运算实现整数的加减乘除

【题目】  给定两个32位整数a和b,可正、可负、可0.不能使用算术运算符,分别实现a和b的加减乘除。【要求】  如果给定的a和b执行加减乘除的某些结果本来就会导致数据的溢出,那么你实现的函数不必对那些结果负责。【基本思路】 加法运算  使用位运算实现加法运算主要分为两个部分。先计算完全不考虑进位进行相加的结果,再计算只考虑进位的产生值。将两个结果相加就是最终的结果。  例如:   a:    0

2017-09-06 13:39:04 1748

原创 位运算---不用额外变量交换两个整数的值

【题目】  如何不用任何额外变量交换两个整数的值【基本思路】  如果给定整数a和b使用如下三行代码即可交换a和b的值:  a = a ^ b  b = a ^ b  a = a ^ b 如何理解这三行代码的具体功能呢?首先要理解关于异或运算的特点:假设a异或b的结果为c,c就是a整数位信息和b整数位信息的所有不同的信息。比如:a= 4 = 100, b = 3 = 011, a ^ b = 1

2017-09-04 23:13:19 678

原创 字符串问题---字典树(前缀树)的实现

【题目】  字典树又称为前缀树或者Trie树,是处理字符串常用的数据结构。假设组成所有单词的字符仅是‘a’~‘z’,请实现字典树的结构,并包含以下四个主要的功能。void insert(String word):添加word,可重复添加void delete(String word):删除word,如果word添加过多次,仅删除一次boolean search(String word):查询w

2017-08-31 23:30:33 1234

原创 字符串问题---回文最小分割数

【题目】  给定一个字符串str,返回把str全部切成回文子串的最小分割数。【举例】  str = “ABA”,str本身就是回文串,返回0.   str = “ACDCDCDAD”,最少需要切两次变成3个回文子串,所以返回2.【基本思路】  本题是一个经典的动态规划的题目。定义动态规划数组dp,dp[i]的含义是子串str[0…i]至少需要切割几次,才能把str[0…i]全部切成回文子串。那么d

2017-08-27 13:21:06 2929 1

原创 字符串问题---最小包含子串的长度

【题目】  给定字符串str1和str2,求str1的子串中含有str2所有字符的最小子串长度。【举例】  str1 = “aabcde”, str2 = “ca”。返回3.   str1 = “12345”, str2 = “344”。返回0.【基本思路】  使用一个哈希表记录str2中每一个字符出现的次数。需要四个变量:left,right表示str1子串str1[left…right]的两边

2017-08-26 03:36:21 4201 1

原创 字符串问题---找到被指的新类型字符

【题目】 新类型的字符定义如下:新类型字符是长度为1或2的字符串表现形式可以仅是小写字母,也可以是大写字母+小写字母,也可以是大写字母+大写字母。例如,a,Bc,DD都是符合条件的新类型字符。现在给定一个字符串str,str一定是若干新类型字符正确组合的结果。比如“eaCCBi”,由新类型字符“e”,“a”,“CC”,“Bi”拼成。再给定一个整数k,代表str中的位置。请返回被k位置指中的新类

2017-08-23 21:42:04 525

原创 Python判断字符串与大小写转换

判断字符串s.isalnum()    #所有字符都是数字或者字母s.isalpha()    #所有字符都是字母s.isdigit()    #所有字符都是数字s.islower()    #所有字符都是小写s.isupper()    #所有字符都是大写s.istitle()    #所有单词都是首字母大写,像标题s.isspace()    #所有字符都是空白字符、\t、\n大小

2017-08-23 21:09:11 1550

原创 字符串问题---找到字符串的最长无重复字符子串

【题目】  给定一个字符串str,返回str中最长无重复字符子串的长度。【举例】  str = “abcd”,返回4。   str = “aabcb”,返回3。【基本思路】  如果str的长度为N,字符的编码范围为M,本题可以做到时间复杂度为O(N),空间复杂度O(M)。具体方法如下:在遍历str之前,先申请几个变量。哈希表map,key表示某个字符,value为这个字符最近出现的位置。整型变量

2017-08-23 20:32:25 808

原创 字符串问题---拼接所有字符串产生字典顺序最小的大字符串

【问题】  给定一个字符串类型的数组strs,请找到一种拼接顺序,使得将所有的字符串拼接起来组成的大字符串是所有可能性中字典顺序最小的,并返回这个大字符串。【举例】  strs = [“abc”, “de”],可以拼接成 “abcde”,也可以拼接成 “deabc”,但前者的字典顺序更小,所以返回 “abcde”  strs = [“b”, “ba”],可以拼成 “bba”,也可以...

2017-08-23 01:21:47 2599

原创 python2/3---sort方法与sorted函数的使用

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。    一、基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。另一种获取已排序的列表副本的方法是使用sorted函数:二、可选参数1.cmp。可以定义自己的比较函数,然后通过参数传递给so

2017-08-23 01:04:20 8153

原创 字符串问题---0左边必有1的二进制字符串数量

【问题】  给定一个整数N,求由‘0’字符和‘1’字符组成的长度为N的所有字符串中,满足‘0’字符的左边必有‘1’字符的字符串数量。【举例】  N = 1。只由‘0’和‘1’组成,长度为1的所有字符串:“0”、“1”。只有字符串“1”满足要求,返回1。   N = 2。只由‘0’和‘1’组成,长度为2的所有字符串:“00”,“01”,“10”,“11”。只有字符串“10”,“11”满足,返回2。

2017-08-22 20:16:22 2060

原创 字符串问题---公式字符串求值

【题目】  给定一个字符串str,str表示一个公式,公式里可能有整数,加减乘除符号和左右括号,返回公式计算的结果。例如,str = 48×((70-65)-43)+8×1。返回-1816。【说明】可以认定给定的字符串一定是正确的公式,不需要对str做公式有效性检查。如果是负数就需要有括号括起来,比如4*(-3)。但如果负数作为公式的开头或者括号部分的开头,则可以没有括号,比如-3*4和(-3*

2017-08-21 22:14:03 3440

原创 字符串问题---括号字符串的有效性和最长有效长度

【题目】给定一个字符串str,判断是不是整体有效的括号字符串。例如,str = “()()()”,返回True,str = “())” 或 “()a()”,返回False。【补充题目】给定一个括号字符串,返回最长的有效字符串。【基本思路】原问题。判断过程如下:从左到右遍历str,判断每一个字符是否是括号,如果不是,直接返回False。遍历过程中,检查目前位置 ‘(‘和 ‘)’的数量,如果 ‘)’

2017-08-21 15:09:28 1856

原创 字符串问题---添加最少字符使字符串整体都是回文字符串

【题目】  给定一个字符串str,如果可以在str的任意位置添加字符,请返回在添加字符最少的情况下,让str整体都是回文字符串的结果。【进阶题目】  给定一个字符串str,再给定str的最长回文子序列字符串strlps,请返回在添加字符最少的情况下,让str整体都是回文字符串的一种结果。进阶问题比原问题多了一个参数,请做到时间复杂度比原问题的实现低。【基本思路】  原问题。首先考虑,如果可以在str

2017-08-21 09:10:54 3458

原创 字符串问题---数组中两个字符串的最小距离

【题目】  给定一个字符串数组strs,再给定两个字符串str1和str2,返回strs中str1与str2的最小距离,如果str1或str2为null,或不在strs中,返回-1。【基本思路】  从左到右遍历strs,用变量last1记录最近一次出现的str1的位置,用变量last2记录最近一次出现str2的位置。如果遍历到str1,那么i - last2就是当前的str1和左边离它最近的str2

2017-08-19 18:59:39 953

原创 字符串问题---翻转字符串

【题目】  给定一个字符类型的数组chas,请在单词间做逆序调整,只要做到单词顺序逆序即可,对空格的位置没有特别要求。例如把chas看成字符串为“I love you”,调整成“you love I”。【补充题目】  给定一个字符类型的数组chas和一个整数size,请把大小为size的左半区整体移到右半区,右半区整体移到左边。例如,如果把chas看作字符串“ABCDE”,size = 3,调整成“

2017-08-19 18:11:21 1322

原创 字符串问题---字符串的调整与替换

【题目】  给定一个字符类型的数组chas[],chas的右半区全是空字符,左半区不含有空字符。现在想将左半区中所有的空格字符替换成“%20”,假设chas的右半区足够大,可以满足替换所需要的空间,请完成替换函数。要求时间复杂度O(N),空间复杂度O(1)。【补充题目】  给定一个字符类型的数组chas[],其中只含有数字字符和‘ * ’字符。现在想将所有的 ‘ * ’字符都放在chas的左边,数字

2017-08-19 12:09:56 2055 1

原创 字符串问题---在有序但含有空的数组中查找字符串

【题目】  给定一个字符串数组strs[],在strs中有些位置为null,但在不为null的位置上,其字符串是按照字典顺序从小到大依次出现的。再给定一个字符串str,请返回str在strs中出现最左的位置。【基本思路】  因为字符串是有顺序的,所以可以使用二分查找,只要注意处理null位置就行。并且注意所求的是最左的位置,所以找到一个str的位置还要再考虑数组中是否还有更左的str。下面是使用py

2017-08-18 22:39:50 688

原创 字符串问题---判断字符数组中是否所有的字符只出现了一次

【题目】  给定一个字符类型数组chas,判断chas中是否所有的字符都只出现过一次。【基本思路】  一.时间复杂度为O(N)的算法。      使用哈希表,记录每个字符出现的频数,如果发现字符的频数不为1,直接返回False。  二.时间复杂度为O(NlogN),空间复杂度为O(1)的算法。      1.先将数组排序,再判断当前字符是否等于前一个字符即可。      2.关键使用什么

2017-08-18 22:31:09 1420

原创 字符串问题---字符串的统计字符串

【题目】  给定一个字符串str,返回str的统计字符串。例如,“aaabbadddffc”的统计字符串为“a_3_b_2_1_d_3_f_2_c_1”。【补充题目】  给定一个字符串的统计字符串cstr,再给定一个整数index,返回cstr所代表的原始字符串上第index个字符。例如,”a_1_b_100”所代表的原始字符串上第0个字符是‘a’,第50个字符是‘b’。【基本思路】  原问题。从左

2017-08-18 22:21:53 1229

原创 字符串问题---替换字符串中连续出现的指定字符串

【题目】  给定三个字符串str,from和to,已知from字符串中没有重复字符,把str中所有from的子串全部替换成to字符串,对连续出现from的部分要求只替换一个to字符串,返回最终的结果字符串。【举例】  str = “123abc”,from = “abc”,to = “4567”,返回“1234567”。   str = “123”,from = “abc”,to = “4567”

2017-08-18 21:44:41 647

原创 字符串问题---将整数字符串转成整数型

【题目】  给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。【举例】  str = “123”,返回123。   str = “023”,因为不符合日常的书写习惯,返回0。   str = “A123”,返回0。   str = “2147483647”,返回2147482647   str = “2147483648”

2017-08-18 21:19:21 1855

原创 字符串问题---判断两个字符串是否互为旋转词

【题目】  如果一个字符str,把字符str前面任意的部分挪到后面形成的字符叫做str的旋转词。比如str = “12345”,str的旋转词有 “12345”, “23451”, “34512”, “45123”和“51234”。给定两个字符串a和b,请判断a和b是否互为旋转词。基本思路如果a和b的长度不一样,直接返回False。生成一个大字符串c,c是两个字符串a拼在一起的结果,即c = a

2017-08-17 23:46:27 1556

原创 字符串问题---去掉字符串中连续出现k个0的子串

【题目】   给定一个字符串str和一个整数k,如果str中刚好有连续的k个‘0’字符出现时,把k个连续的‘0’字符删除,返回处理后的字符串。【举例】   str = “A00B”,k = 2,返回 “AB”。   str = “A0000B000”,k = 3,返回 “A0000B”。【基本思路】使用两个变量count和start。count表示目前出现的连续‘0’的个数,start表示连

2017-08-17 00:27:03 901

原创 字符串问题---字符串中数字子串的求和

【题目】   给定一个字符串str,求其中全部数字串所代表的数字之和。要求如下:忽略小数点字符,例如“A1.3”,其中包含两个数字1和3.如果紧贴数字子串的左侧出现字符“-”,当连续出现的数量为奇数时,则数字视为负,连续出现的数量为偶数时,则数字视为正。例如,“A-1BC–12”,其中包含数字-1和12。【举例】   str = “A1CD2E33”返回36.   str = “A-1B

2017-08-17 00:01:00 3519

原创 字符串问题---判断两个字符串是否为变形词

【问题】   给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样并且每种字符出现的次数也一样,那么str1与str2互为变形词。请实现函数判断两个字符串是否互为变形词。【举例】   str1 = “123”,str2 = “231”,返回True   str1 = “123”,str2 = “2331”,返回False【基本思路】如果两个字符串的长度不相同,直接返回

2017-08-16 23:21:35 1341

原创 递归与动态规划---N皇后问题的递归方法和位运算方法

问题: N皇后问题是指在N×N的棋盘上要摆N个皇后,要求任何两个皇后不同行、不同列,也不在同一条斜线上。给定一个整数N,返回N个皇后的摆法有多少种。基本思路:1.递归方法。如果在位置(i,j)放置了一个皇后,那么那些位置就不能在放置皇后了呢?整个 i 行都不能放置整个 j 行都不能放置如果位置(a,b)满足 |a - i| = |b - j|,说明(a,b)与(i,j)处在同一条斜线上,也不

2017-08-15 21:30:52 841

原创 递归与动态规划---数组中的最长连续序列

问题:   给定无序数组,返回其中最长的连续序列的长度。举例:   arr = [100, 4, 200, 1, 3, 2],最长的连续序列为[1, 2, 3, 4],所以返回4。基本思路:  利用哈希表可以实现时间、空间复杂度都为O(N)的方法。具体过程如下:生成哈希表map,key表示遍历过的某个数,value代表key这个数所在的最长连续序列的长度。从左到右依次遍历数组,假设遍历到ar

2017-08-15 20:30:45 940

原创 递归与动态规划---跳跃游戏

题目:   给定数组arr,arr[i] == k代表可以从位置i向右跳1~k个距离。比如,arr[2] == 3,代表从位置2可以跳到位置3、位置4或者位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。举例:   arr = [3, 2, 3, 1, 1, 4]   arr[0] = 3,选择跳到位置2;arr[2] == 3,可以跳到最后的位置,所以返回2。基本思路:1.使

2017-08-15 20:04:22 768

原创 递归与动态规划---排成一条线的纸牌博弈问题

问题:   给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左边或者最右边的一张牌,最后所拿牌累加和最大的玩家获胜,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。举例:   arr = [1, 2, 100, 4]   玩家A先拿1,玩家B拿4,玩家A再拿100,玩家B再拿2,游戏结束,玩家A获胜,

2017-08-15 19:01:33 883 1

原创 递归与动态规划---数字字符串转换为字母组合的种数

问题:   给定一个字符串str,str全部由数字字符组成,如果str中某一个或者某相邻两个字符组成的子串在1~26之间,则这个子串可以转换为一个字母。规定“1”转换为“A”,“2”转换为“B”……“26”转换为“Z”。求str有多少种不同的转换结果。举例:   str = “1111”   能转换成的结果有“AAAA”,“LAA”,“ALA”,“AAL”和“LL”,返回5。   str =

2017-08-15 13:35:02 1624

原创 递归与动态规划---龙与地下城游戏问题

问题:   给定一个二维数组map,含义是一张地图,例如如下,矩阵:   -2  -3  3   -5 -10 1   0  30 -5   游戏规则如下:骑士从左上角出发,每次只能向右或者向下走,最后到达右下角见到公主。地图中每个位置的只代表骑士要遭遇的事。如果是负数,表示此处有怪兽,要让骑士损失血量。如果是非负数,表示此处有血瓶,能让骑士回血。骑士从左上角到右下角的过程,走到

2017-08-15 13:08:02 1991

原创 递归与动态规划---字符串的交错组成

问题:   给定三个字符串str1, str2和aim, 如果aim包含且仅包含str1和str2的所有字符,而且在aim中属于str1的字符之间保持原来在str1中的顺序,属于str2的字符之间保持原来在str2中的顺序,那么称aim是str1和str2的交错组成。实现一个函数,判断aim是否是str1和str2的交错组成。举例:   str1 = “AB”, str2 = “12”。那么”A

2017-08-14 02:07:45 596

原创 递归与动态规划---最小编辑代价

问题: 给定两个字符str1和str2,再给定三个整数ic,dc,rc,分别代表插入,删除和替换一个字符的代价,返回将str1编辑成str2的最小代价。举例: str1 = “abc”,str2 = “adc”,ic = 5,dc = 3,rc = 100。 从str1编辑到str2,先删除’b’,然后插入’d’是代价最小的,所以返回8。基本思路: 如果str1的长度为N,str2的长度为M

2017-08-14 01:34:31 1454

原创 递归与动态规划---最长公共子串问题

问题:   给定两个字符串str1和str2,返回两个字符串的最长公共子串。举例:   str1 = “1AB2345CD”,str2 = “12345EF”,返回”2345”。基本思路: 假设str1的长度为N,str2的长度为M,生成N×M的矩阵dp,dp[i][j]的含义是必须以str1[i]和str2[j]结尾的最长公共子串的长度,dp[i][j]的计算方法如下:矩阵的第一行。如果s

2017-08-13 22:52:03 1465

原创 递归与动态规划---最长公共子序列问题

问题: 给定两个字符串str1和str2,返回两个字符串的最长公共子序列。举例: str1 = “1A2C3D4B56”,str2 = “B1D23CA45B6A”. “123456”或者”12C4B6”都是最长公共子序列,返回哪一个都行基本思路: 如果str1和str2的长度分别为N,M,生成N×M的矩阵dp,dp[i][j]的含义是str1[0…i]与str2[0…j]的最长公共子序列,

2017-08-13 20:55:21 1178

原创 递归与动态规划---汉诺塔问题

问题:   给定一个整数n,代表汉诺塔游戏中从小到大放置的n个圆盘,假设开始时所有的圆盘都放在左边的柱子上,想按照汉诺塔游戏的要求把所有的圆盘都移到右边的柱子上,实现函数打印最优移动轨迹。 举例:   n = 2时,打印:   move from left to mid   move from left to right   move from mid to right 基本思路:

2017-08-13 20:26:55 2318

C语言常见的问题集

1.1 我如何决定使用那种整数类型? 如果需要大数值 (大于 32,767 或小于 −32,767), 使用 long 型。否则, 如果空 间很重要 (如有大数组或很多结构), 使用 short 型。除此之外, 就使用 int 型。如 果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字 节时避免符号扩展的问题, 请使用对应的无符号类型。但是, 要注意在表达式中混 用有符号和无符号值的情况。 尽管字符类型 (尤其是无符号字符型) 可以当成 “小” 整型使用, 但由于不可预 知的符号扩展和代码增大有时这样做可能得不偿失。使用无符号字符型有所帮助; 类似的问题参见问题 12.1。 在选择浮点型和双精度浮点型时也有类似的权衡。但如果一个变量的指针必 须为特定的类型时, 以上规则不再适用。

2018-05-22

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

TA关注的人

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