题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式. 模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式. 例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但是与”aa.a”和”ab*a”均不匹配. 样例 输入: s="aa" p="a*" 输出:true 算法1很经典的题目 也相当的难.采用动态规划dp[i][j] 表示 s[0~i)的字符串与p[0~j)的字…
原创博文,转载请注明出处! 0.简介 # 本文是牛客网<剑指offer>刷题笔记,笔记索引链接 1.题目 # 用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 2.思路 # 2*1的矩阵覆盖2*8的矩阵的方法f(8):用第一个1*2矩阵覆盖2*8矩阵的最左边时有竖着或横着两种方法. 当1*2矩阵竖着放时,2*8矩阵右边剩余2*7的区域,覆盖2*7区域的方法记为f(7); 当1*2矩阵横着放时,2*8左上角放一个1*2的矩阵…
面试10题: 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1)+f(n-2) 解题代码一:基于循环(推荐) 代码如下: # -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here small=0 big=1 if n<=0: return 0 if n==1:…
题目链接:https://leetcode.com/problems/number-of-1-bits/description/ 题目大意:与338题类似,求解某个无符号32位整数的二进制表示的1的个数.注意要求是无符号32位整数. 注意:无符号整数的范围是0~2^32-1,而普通int的范围是-2^31 ~ 2^31-1. 法一:直接用普通十进制转二进制的办法做,发现超时了,超时数据是2^31,当我把这个数放进eclipse中发现直接报错,至于为什么在leetcode里还可以编译通过,我也不知…
总结 1. 通过按位对比来判断, 没有更优的方法了…
import java.util.Scanner; /* 前两种方法是看最低为是不是为1,不为1则向右移动. 第一种只能对正整数有效,对负数不行,因为负数用的是补码,最高外符号位为1,最后右移动,肯定会变成0xFFFFFFFFFF....F*/ public class FindNmuberOf1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNextInt(…
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题目分析 当然也可以逆向思维 应为可以横着放或竖着放,多以f(n)可以是2*(n-1)的矩形加一个竖着放的2*1的矩形或2*(n-2)的矩形加2横着放的,即f(n)=f(n-1)+f(n-2) 当到了最后,f(1)=1,f(2)=2 代码 function rectCover(number) { // write code here if (number =…
  题目描述:   我们可以用2 X 1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2 X 1的小矩形无重叠地覆盖一个2 X n的大矩形,总共有多少种方法?   解题思路:   我们可以以2 X 8的矩形为例.   先把2X8的覆盖方法记为f(8),用1X2的小矩形去覆盖时,有两种选择:横着放或者竖着放.当竖着放时,右边还剩下2X7的区域.很明显这种情况下覆盖方法为f(7).当横着放时,1X2的矩形放在左上角,其下方区域只能也横着放一个矩形,此时右边区域值剩下2X6的区域,这种情况下覆盖方法…
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数. f(3) = f(3-1) + f(3-2) + f(3-3) ... f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n) 说明:…
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: ①方法一 对于这种题没有思路怎么办?可以先从最简单的情况开始考虑: 显然,当n = 1时,只有一种方法 当n = 2时,如图有两种方法 当n = 3时,如图有三种方法 当我们做到这里总会出现错觉,是不是n等于几就是有几种方法呢?我们再接着来尝试: 当n = 4时,如图有五种方法. 做到这里基本上会确定就是斐波拉契数列了,可以接着验证,这里不做赘…