- 博客(40)
- 收藏
- 关注
原创 剑指offer-把数字翻译为字符串(leetcode)
这道题可以看作是动态规划类的题目,类似于跳台阶的题目。例如:12258状态转移方程:dp[i] = dp[i+1] + dp[i+2]class Solution {public: int translateNum(int num) { string str = to_string(num); vector<int> nums(str.length()); int count = 0; int length
2020-06-27 18:37:19 188
原创 剑指offer-数字序列中的某一位(leetcode)
又是一道找规律的题目,头大得很。为了方便10 - n 位的规律,我们默认n >= 10,其他情况只要renturn n; 就可以了。
2020-06-27 18:32:30 212
原创 剑指offer-数组中出现次数最多的数字
常规算法不就说了,这次看到大佬的题解,特地记录以下。解法名称为:摩尔投票法假设出现次数最多的数字为 x,当nums[i] == x 时,votes += 1,否则 votes -= 1由此我们可以知道,遍历完数组后,votes > 0因此若数组中前m个数的和为0,那么后(n-m)个数的和仍大于0,出现次数最多的数字仍为 xclass Solution {public: int majorityElement(vector<int>& nums) {
2020-06-23 13:19:37 383
原创 剑指offer-剪绳子(leetcode)
这是一道动态规划的题目,如果看不出出来的话,可以模拟该题的过程。状态转移方程:dp[i] = max( dp[i] * dp[i-j], i * (j-i) )但是我们可以通过进一步观察当 n > 4 的时候,(i-j)< dp[i-j],同时在分割绳子的时候作为被分割出来的绳子长度 <= 3 的时候不应该进一步分割,而是选择不分割。所以当 n > 3 的时候,状态转移方程为dp[i] = max( dp[i], dp[i]*dp[i-j] );说的可能有点绕,建议.
2020-06-18 23:43:51 182
原创 剑指offer-机器人的运动范围(leetcode)
这道题目可以使用回溯的方法来做,但是想来想去应该有更加简洁的算法,即如下想法:因为机器人的可达路径总是由左至右或者由上至下的方式到达,也就是说,一个地点是否可达,不仅取决于自身坐标是否符合要求,而且其左边或者上边的地点也要可达,从而可以得到以下结论:visit[i][j] = visit[i-1][j] | visit[i][j-1]; 但是在具体写代码的时候要注意到边界问题。class Solution {public: int movingCount(int m, int n, i.
2020-06-18 21:06:42 164
原创 剑指offer-旋转数组的最小数字(leetcode)
这道题目用到了二分查找的思想。nums[middle] >nums[end] :可以确定最小数字在(middle+1,end)这个区间nums[middle] < nums[end] :可以确定最小数字在(start, middle)这个区间nums[middle] == nums[end] :这个情况比较特殊,不能确定最小数字在左边区间还是右边区间。举一个特殊例子: 1,0,1,1...
2020-06-17 22:10:47 172
原创 剑指offer-青蛙跳台阶(leetcode)
因为小青蛙一次只能跳1/2个台阶,因此如果要跳到第n个台阶,只能从n-1或者n-2台阶跳上去。典型的斐波那契数列,只不过第0项也为1,只有这点区别。class Solution {public: int numWays(int n) { if(n < 2){ return 1; } int fib_N = 0,fib_O = 1,fib_T = 1; for(int i = 2;i <= n
2020-06-17 16:52:40 162
原创 剑指offer-用两个栈实现队列(leetcode)
这道题目的思路很简单:将输入的数据压入s1中,再将s1中的数据压入s2中,这样s2的出栈顺序就和队列的出队顺序一致。但是在判断出栈的时候要先判断s2是否为空,再判断s1是否为空。若两者都为空,则输出-1若s2不为空,则返回栈顶元素若s2为空 && s1不为空,将s1中的元素压入s2中,再返回s2的栈顶元素class CQueue { stack<int> s1; stack<int> s2;public: CQueue(
2020-06-17 14:44:28 108
原创 剑指offer-二维数组中的查找(leetcode)
这道题的解法核心就是:从右上角不断搜索。若 matrix[row][col]==target 则return true;若 matrix[row][col] >target,则向该数字的左方继续搜索,即col--;若matrix[row][col] <target,则向该数字的下方继续搜索,即row++;这样子做的原因是数组的每行每列都是有序的,这样子可以很容易的缩小查找范围。当然也可以使用二分法继续加快速的。class Solution {public: ...
2020-06-16 15:26:21 149
原创 剑指offer-数组中重复的数字(leetcode)
题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。简单来说就是找到并返回数组中任意一个重复的数字。一共有三种思路可以解决这个问题:(1)把数组进行排序,遍历数组进行查找。(2)开辟一个额外的数组,进行比对。(3)在原数组上进行原地交换,把数组中的元素交换到其对应下表上。由于每个数字最多交换2次就可以到达他的位置,因此
2020-06-15 16:31:47 156
转载 转载:数据库--视图的基本概念以及作用
转载来源:https://blog.csdn.net/buhuikanjian/article/details/53105416视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据。--创建视图--create or replace ...
2020-04-03 17:37:41 193
原创 leetcode 46. 全排列
dfs 的应用这道题我们依旧可以通过使用 dfs 的思想,也就是回溯的方法来做。举个例子:1,2,3的全排列为[1,2,3],[1,3,2][2,1,3],[2,3,1][3,1,2],[3,2,1]通过观察我们可以看出,以 1 开头的全排列实际上就是,[ 1,[2,3] 的全排列 ] ===> [1,2,3]、[1,2,3],通过这种方法我们可以很容易想到以 1 开头...
2020-03-04 16:12:35 100
原创 leetcode 40. 组合总和 II
这两天偷懒了,没有写题解=.=dfs 模板题虽说是模板题,还是要理解具体思想。因为题目中说到,每个元素不能重复利用,并且 candidates 可能有重复元素,所以我们要先把 candidates 进行排序。接下来就是深搜的过程了,由于每次搜索都是建立在上次搜索的结果之上,如果candidates[i] + sum <=target 那么就进行下一次搜索,并且把 candidate...
2020-03-04 15:02:52 128
原创 leetcode 61. 旋转链表
链表的应用乍一看这道题很麻烦,不过当我们仔细观察后可以发现,不论 k取何值,旋转的次数实际为 k % len ,len 为链表的长度。因此这道题的任务就是找到倒数第 k 个数据,使倒数第 k-1 个数据的next 指向 NULL,最后使链表最后一个数据的next指向head。/** * Definition for singly-linked list. * struct List...
2020-02-29 18:31:13 104
原创 leetcode 19. 删除链表的倒数第N个节点
依旧是链表的应用最开始看到这道题的时候,想法很暴力,遍历一遍得到长度,然后再遍历一遍删除指定元素。后来看来大佬的题解发现可以使用双指针的方法,只需要一次遍历就可以删除指定节点。需要注意的一点是,虽然题目中已经说明 n 是有效数字,但是依旧有可能出现 fast 指针为空的情况,即删除第一个元素的时候。这个时候只需要返回 head->next 就可以了,之后就可以愉快的写代码了!/...
2020-02-29 17:16:23 103
原创 leetcode 2. 两数相加
链表的应用题目的思路很简单,通过建立一条新的链表用来存放两数相加的结果。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ...
2020-02-29 16:47:52 102
原创 leetcode 64. 最小路径和
经典的动态规划题目因为只能通过向下或者向右走,不需要考虑对角等因素,而且要求的是最小路径和。因此,可以很容易得到状态转移方程grid[i][j]+=grid[i-1][j]<grid[i][j-1]?grid[i-1][j]:grid[i][j-1]; 在该题中我没有重新申请一个二位数组来存放路径和,而是直接在原数组上面做修改。得到状态转移方程后,只需要做好数组初始化...
2020-02-28 18:31:57 139
原创 leetcode 70. 爬楼梯
感觉动态规划的前几道题有点水~_~申请一个一维数组dp,dp[i] 表示走到 i+1 层有多少种方式。一次只可以走一步或者两步,由此可以得到状态转移方程 dp[i]=dp[i-1]+dp[i-2]; 再做好数组初始化就可以很容易得到答案。int climbStairs(int n){ if(n < 3){ return n; }...
2020-02-28 18:09:24 162
原创 leetcode 62.不同路径
经典的动态规划题目。因为机器人只能向右或者向下走,那么dp[i][j] =dp[i-1][j] +dp[i][j-1],dp[i][j]表示从起点到达 path[i][j] 的总路径和。状态转移方程就是dp[i][j] =dp[i-1][j] +dp[i][j-1]。int uniquePaths(int m, int n){ int dp[n][m]; mems...
2020-02-28 17:30:26 118 1
原创 leetcode 53.最大子序和
在遍历数组的时候,关键在于找到最大子序和的第一个数字。若当前访问的数字大于sum,那么必须要更新sum,即nums[i] > sum 的时候,更新sum,sum的含义为子序列nums[x...i]的和。最后更新ans。int maxSubArray(int* nums, int numsSize){ int ans = nums[0]; int sum = nums[0...
2020-02-28 17:00:13 90
原创 leetcode 20. 有效的括号
今天做了好多水题=_=简单说一下这个题吧,很经典的栈的应用。当输入字符是s[i]=='('||s[i]=='['||s[i]=='{'||top==-1 的时候,字符入栈,否则判断符号是否匹配。这个时候可以通过ASCII值来判断符号的匹配情况。bool isValid(char * s){ int len = strlen(s); if(len =...
2020-02-26 23:22:08 81
原创 leetcode 5. 最长回文子串
经典的动态规划题目。 由于回文序列的特殊性,可以很容易想到,如果字符串 s 是回文序列,那么如果我们在他的两端加入两个相同的字符后形成一个新的字符串 s_new 还是一个回文序列。当然,如果 s 不是回文序列,或者加入其两端的字符不相同,最后所得到的序列 s_new就不回文序列。 由此我们可以想到动态规划的状态转移方程 dp[i][j] = ( s[i] == ...
2020-02-26 22:47:05 69
原创 leetcode 14.最长公共前缀
一道水题,简单的说一下思路吧。通过使用双指针的方法,指针 i 指向公共前缀的末尾,指针 j 用来遍历所有字符串,直到遇到不同的字符结束比较,返回公共前缀。class Solution {public: string longestCommonPrefix(vector<string>& strs) { if(strs.size() == 0){...
2020-02-26 22:28:25 79
转载 Notepad++选中行操作 快捷键 使用技巧
用Notepad++写代码,要是有一些重复的代码想copy一下,还真不容易,又得动用鼠标,巨烦人。。。。有木有简单的方法呢,确实还是有的不过也不算太好用。主要是应用键盘上的 Home ...
2019-07-12 20:31:41 1170
原创 在Windows下配置 FreeSSHd 的方法
这几天心血来潮,想要在Windows上配置内网穿透,故而想到了ssh服务,在这篇文章中使用到的是FreeSSHd软件,接下来会介绍软件的使用方法及常见问题解决。 1. 软件下载http://www.freesshd.com/?ctt=download 2.环境配置 首先我们要开启SSH服务,一般来说是开启不了的,因为 F...
2018-12-11 21:33:58 10963 1
原创 使用OkHttp 请求网络,返回的数据无法解析--okhttp3.internal.http.RealResponseBody@3c95f7
在解析 post 返回的信息的时候遇到了 okhttp3.internal.http.RealResponseBody@3c95f7 的错误,在网上查了资料发现,原来是response.body().toString() 的问题,只需要将该语句改成 response.body().string() 即可。...
2018-11-26 22:42:34 2488
原创 paddingLeft 与 layout_marginLeft 的区别
paddingleft(内边距) 是指对其内部内容的内边距layout_marginLeft (外边距)是指距离外部的容器的距离 该图片中的第一个是加上 android:paddingLeft="50dp" 属性的Button控件,第二个控件什么都没有添加,第三个控件是加上 android:layout_marginLeft="50dp" 属性的Button控件。...
2018-11-26 21:37:36 1830
原创 Android 使软键盘弹出后布局可以滚动
最近遇到了这样一个问题,点击EditText后软键盘弹出并遮挡住布局,使布局无法滚动。在网上搜索了一番,得到下面的解决方式:在 Activity 的 setContentView() 之前加上getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);但是,这样会使进入页面后就弹出...
2018-11-26 17:15:50 2151
原创 hdu-4489-The King’s Ups and Downs(DP)
Problem DescriptionThe king has guards of all different heights. Rather than line them up in increasing or decreasing height ...
2018-10-17 18:25:30 198
原创 zoj 3747 Attack on Titans(DP)
Attack on TitansTime Limit: 2 Seconds Memory Limit: 65536 KB Over centuries ago, mankind faced a new enemy, the...
2018-10-16 21:07:42 175
原创 hdu 2044 一只小蜜蜂…(DP)
Problem Description有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。Output对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数...
2018-10-15 17:12:12 138
原创 hdu 2018 母牛的故事(DP)
Problem Description有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?Input输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。Output对于每个测试实例,输出在第n年的时候母...
2018-10-15 16:47:25 121
原创 hdu 2084 数塔(DP)
Problem Description在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗?Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表...
2018-10-15 16:30:15 140
转载 ACM-动态规划专题总结
转载请注明出处,谢谢。 http://blog.csdn.net/cc_again?viewmode=list ———- Accagain 2014年5月15日动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。本人动态规划博客地址:http://blog.csdn.net/cc_aga...
2018-10-15 15:59:04 300
原创 OkHttp的简单使用和封装
OkHttp 的封装: 1、添加依赖implementation 'com.squareup.okhttp3:okhttp:3.7.0'implementation 'com.google.code.gson:gson:2.8.0'implementation 'com.squareup.okio:okio:1.11.0' 2、CallBack的创建...
2018-09-27 21:06:27 284
转载 【转】Java反射机制的原理及在Android下的简单应用
花了几天时间,研究了一下Java的反射机制。在这里总结一下这几天学习的成果,一来分享自己的学习过程和在学习中遇到的问题,二来是给像我一样不太了解Java反射机制的同学做一个简单的介绍。在文章后面会链接一个Android反射机制的应用程序。一、反射的概念及在Java中的类反射 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述...
2018-09-25 21:30:20 125
原创 android7.0调用相机时候,FileProvider报NullPointerException的解决方法
今天在做项目的时候,用到了调用相机的功能。但是这次忽然FileProvider报了空指针的错误 定位错误的时候,找到了FileProvider,是获取地址的一个方法 在这里报空指针的话,我觉得应该是地址为空所造成的,在检查完所写方法后,发现FileProvider参数中的authority与配置文件中所写的不一致。在修改完后即可正常运行。 同时...
2018-09-17 19:39:01 669
原创 虚拟机ping不通主机,主机可以ping通虚拟机解决方案
我在win10上安装Kali虚拟机后,发现虚拟机ping不通主机,而主机却可以ping通虚拟机。在网上搜寻一段时间后发现解决方案有两种。 1.关闭主机防火墙。这种方式可能会有安全隐患,故不建议使用 2.启用文件类型为“公用”的“文件和打印共享(回显请求 – ICMPv4-In)”规则。 第二种方案的步骤如下: 1.打开w...
2018-07-24 15:46:03 24157 8
原创 Android 导入Glide后 com.android.support:appcompat-v7:26.1.0 显示红色波浪线
该图片内容是我在项目中导入最新版本的glide后所报的错误我尝试使用低版本的glide后,就不报错了这里贴一个成功的例子
2018-07-23 10:57:42 4353
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人