自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 黑白翻转棋算法java实现

翻转游戏是在4*4的正方形里进行的,每个小正方形放有拥有黑白两面的棋子。每一轮你翻转3-5个棋子,把它从白变黑或从黑变白。 翻转的规则如下: 1. 选择任意一个棋子。 2. 翻转选择的棋子和与它相临的前后左右的棋子(如果有的话) 参考如下例子: bwbw wwww bbwb bwwb 其中 b表示黑色在上面,w表示白色在上面。如果选

2017-09-15 11:44:02 6184 1

转载 LeetCode (43) Multiply Strings

按照常规解法,用字符串操作来模拟乘法的步骤可以先实现字符串高精度加法,再将加法运用到乘法过程中。这种方法简单但是耗时比较大,这里介绍一种比较巧妙的方法,借鉴LeetCode上的一份高票代码。观看下图,它描述的是我们计算乘法的过程。仔细分析可以发现,对于原来在上面字符串中下标为1的“2”和在下面字符串中下标为0的“4”的相乘结果08出现在了最后的乘法结果字符串的下标1和2处。这一结果对其他下

2017-09-02 11:23:14 229

转载 LeetCode(42)--Trapping Rain Water

这道题的要求是计算最多能装多少水。其中,数组中的数字表示高度。这道题的思路是采用l和r两个指针,维护装水两边的位置。当l处高度低时,说明l右侧装的水肯定和l处一样高,此时逐步右移l,同是加上l处与右移后位置高度差(因为这里都能装水啊),直到再遇到同样高或者更高的位置。然后进行下一轮判断。同样,当r处高度低时,说明r左侧的水肯定和r处一样高,此时逐步左移r,同是加上r处与左移后位置高度差,直到再遇到同

2017-09-01 16:37:10 199

原创 leetCode (41)--First Missing Positive

这道题,我的思路大致如下: 首先对数组进行排序,设置一个计数为i,记录已经出现的正整数数目,依次遍历排序后的数组,判断大于0的元素是否等于i,若不等于可以判断为缺少的最小正整数就是i;要考虑的特殊情况是有重复数字出现和最后一位元素的判断。若与前一位数字相同,则继续下一次遍历,i不递增,特殊的如果最后一位是重复的,直接返回i;若判断到最后一位,返回i+1。如果不是特殊情况,i递增,继续遍历。clas

2017-09-01 15:08:19 203

原创 LeetCode(40)--Combination Sum II

与上一道题相比需要注意的是: 1、在同一层递归树中,如果某元素已经处理并进入下一层递归,那么与该元素相同的值就应该跳过。否则将出现重复。 例如:1,1,2,3 如果第一个1已经处理并进入下一层递归1,2,3 那么第二个1就应该跳过,因为后续所有情况都已经被覆盖掉。 2、相同元素第一个进入下一层递归,而不是任意一个 例如:1,1,2,3 如果第一个1已经处理并进入下一层递归1,2,3,那

2017-09-01 10:42:57 188

转载 LeetCode(39)--Combination Sum

转载自:博客 这道题看过好几次最开始都没看出怎么做就一直留着,结果今天在做Subsets 这道题时找到了灵感,使用深度优先的方法搜索,并且用一个vector记录向量,找到合适的向量时即将它保存在结果中,并进行回溯操作。这道题相比于Subsets中使用回溯法而言更麻烦一些。以后需要注意这种解题方法,当要求解的结果是一系列向量的集合时使用dfs搜索记录路径这种方法。对于输入candidates=[1,

2017-09-01 10:00:04 173

原创 LeetCode(38)--Count and Say

第n个字符串依赖于第n-1个字符串,从左往右依次数出有连续几个数字。举例如下: 1 11 上个字符串中有1个1 21 上个字符串中有2个1 1211上个字符串中有1个2、1个1 111221 312211上个字符串中有3个1、2个2、1个1 13112221 1113213211实现代码如下:class Solution {public: string co

2017-08-29 16:50:47 207

转载 LeetCode(37)--Sudoku Solver

题意:解9*9数独做法:回溯 对每一个还没填充的格子,尝试1~9这9个数字,如果是合法的,则继续填充下一个格子,否则回溯。 判断合法:只需要判断对应行、对应列、对应3*3,有没有矛盾。实现代码如下:class Solution {public: void solveSudoku(vector<vector<char>>& board) { solve(board);

2017-08-29 10:55:19 229

原创 LeetCode(36)--Valid Sudoku

这道题一看就是用空间来换取时间,正常情况下应该每行进行比较,每列进行比较,然后每一个网格进行比较,但是每个比较都有一个双层循环。可以借助STL中的set来进行判断是否已经存在该元素,典型的空间换取时间的方法。 C++ 11中对unordered_set描述大体如下:无序集合容器(unordered_set)是一个存储唯一(unique,即无重复)的关联容器(Associative containe

2017-08-29 10:15:27 246

原创 LeetCode(35)--Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume no duplicates in the array.Here

2017-08-28 20:17:03 229

原创 LeetCode(34)--Search for a Range

题目要求是:给定一个整型已排序数组,找到一个给定值在其中的起点与终点。 你的算法复杂度必须低于O(logn)。如果目标在数组中不会被发现,返回[-1, -1]。 例如,给定[5, 7, 7, 8, 8, 10],目标值为8,返回[3, 4]。 这道题思路也比较简单,大致思路如下:首先利用二分法找到等于target值的数,然后访问这个数的前面和后面,找到所有与target值相等的数,并记录下区间

2017-08-28 19:28:12 254

原创 LeetCode(33)--Search in Rotated Sorted Array

一般的查找都是在一个顺序容器中进行寻找,该题做了一些小变化,在顺序容器中有一个转折点。 假定一个数组在一个我们预先不知道的轴点旋转。例如,0 1 2 4 5 6 7可能会变为4 5 6 7 0 1 2。给你一个目标值去搜索,如果找到了则返回它的索引,否则返回-1。你可以假定没有重复的元素存在于数组中。可以利用一般的查找思路,二分法进行查找,对边界条件稍作修改即可。实现代码如下:class Solu

2017-08-04 11:41:44 163

原创 LeetCode(32)--Longest Valid Parentheses

这道题可以借用前面的括号匹配的思路,使用栈来解决。这次,我们压入栈的不再是‘(’或者‘)’,而是它的索引值。 大致思路如下: 遍历字符串s,当当前字符是‘(’,则压入栈中;若是‘)’,则判断栈顶是否为‘(’,若是则将栈顶的‘(’弹出,若不是则压入栈中。最后栈中剩下的数字就是不能匹配的‘(’和‘)’的索引值。 例如:”)()())()()(” 最后栈中剩余值为“0 5 10” 说明0~5之间

2017-08-01 22:34:36 156

原创 LeetCode(31)--Next Permutation

就是将这个数组排列成下一个较大的数,如果已经是最大的了,就排列成最小的数。 我是这么想的,从后往前遍历数组,如果一直是逐渐增大的,则已经是最大的了,如果出现了一个下降的数,那么遍历就到此为止,因为这已遍历的部分就可以排列成下一个较大的数了 当找到这个突然下降的点A后,由于它后面已经排列为“最大”,即从前往后一直变小,所以应该从后面比A大的数中找最小的点B,然后A和B交换位置。这个时候以B开头,后

2017-07-31 17:35:26 225

转载 LeetCode(30)--Substring with Concatenation of All Words

转载自博客 LeetCode30———–Substring with Concatenation of All Words 看题目都有些费劲,要不是看了几组Custom Testcase才知道题意,顺便说一句Custom Testcase这个功能在调试的时候真的非常实用。 题目意思: 给定一个字串不妨称为母串S,和一组单词,他们保存在一个string的顺序容器Words中,并且满足一个条件,

2017-07-31 11:22:05 203

原创 LeetCode(29)--Divide Two Integers

这道题要求不使用*,/,%的符号来实现除法。一开始考虑不断用被除数减去除数,计算轮数来得到结果,但是在极端情况下,比如被除数是INT_MAX,除数是1时,会超时。因此,在网上看到大家使用‘<<’’>>’左移右移的符号,实现乘以2的次方,大大减少了耗时。 思路如下: 举个例子: 实现的代码如下:class Solution {public: int divide(int div

2017-07-29 17:45:32 195

原创 LeetCode(28)--Implement strStr()

这道题题意是找到字符串中,子字符串出现的位置,若没有包含子字符串则返回1。可以直接调用string的函数find(a,b),其中a为子字符串,b为起始位置,若为查找到则返回无穷大。 代码实现如下:class Solution {public: int strStr(string haystack, string needle) { int res= haystack.fi

2017-07-28 14:11:32 161

原创 LeetCode(27)--Remove Element

这道题的题意是删除nums中和val值相等的元素,并返回新数组的元素个数。思路是首先对数组进行排序,这样和val值相同的数字会连续出现在一个区域,容易删除。定义两个迭代器,分别指向排序后新数组的val值区域的起始和终止位置,然后调用erase()函数。 实现代码如下:class Solution {public: int removeElement(vector<int>& nums,

2017-07-28 11:02:06 204

原创 LeetCode(26)-- Remove Duplicates from Sorted Array

这道题比较简单,就是将输入数组的重复的数字删除,并返回新数组的长度。一开始理解错,以为只需要返回不重复数字的长度,实际还要对输入的数组nums删除重复数据。 实现代码如下:class Solution {public: int removeDuplicates(vector<int>& nums) { int len = 0; if (nums.size(

2017-07-27 22:42:10 156

转载 LeetCode(25)--Reverse Nodes in k-Group

转载自博客 题目要求对链表中的元素按K个一组,反序后,形成新的链表。对于最后不满K个元素,保持原来的顺序输出。所以本题可以按如下方法解: 1、建立空的新链表list1. 2、如果原链表剩余元素个数不小于K个,则取K个元素,采用头插法构建反序的临时链表,插入list1的尾部。 3、如果链表剩余元素个数小于K个,则将剩余的链表插入到list1的尾部。 实现代码如下:class Solution

2017-07-27 22:16:53 234

原创 LeetCode(24)--Swap Nodes in Pairs

这道题是实现链表中两个两个数字的交换。一开始的思路是改变每一个数字next的指向,但是发现略为复杂,因此直接交换两个的val值。定义了两个指针,依次两个两个向后遍历,若链表为奇数个,则前面偶数对进行交换,最后一个数字不变。 实现代码如下:class Solution {public: ListNode* swapPairs(ListNode* head) { if (hea

2017-07-27 15:15:06 247

转载 LeetCode(23)--Merge k Sorted Lists

转自博客 考虑分治的思想来解这个题(类似归并排序的思路)。把这些链表分成两半,如果每一半都合并好了,那么我就最后把这两个合并了就行了。这就是分治法的核心思想。但是这道题由于存的都是指针,就具有了更大的操作灵活性,可以不用递归来实现分治。就是先两两合并后在两两合并。。。一直下去直到最后成了一个。(相当于分治算法的那棵二叉树从底向上走了)。第一次两两合并是进行了k/2次,每次处理2n个值。第二次两两合

2017-07-27 11:09:35 160

原创 LeetCode(22)--Generate Parentheses

这道题考虑用递归算法。截至条件是剩余的左括号和右括号数都为0,在递归时注意剩余的左括号数要小于右括号数。实现代码如下:class Solution {public: vector<string> generateParenthesis(int n) { vector<string> res; if (n < 1)return res; help

2017-07-26 16:57:23 131

原创 LeetCode(21)--Merge Two Sorted Lists

这道题目是要求合并两个有序链表,思路是一次比较两个链表的元素,插入到新的链表中,需要注意的是三个指针的一些细节问题,截至条件是一个链表访问完毕,直接将另一个链表附在新链表后面即可。 实现代码如下:class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (l1 == N

2017-07-26 11:32:56 134

原创 LeetCode(20)-- Valid Parentheses

这道题是一道简单的符号匹配问题。可以用栈来解决。‘(’和‘)’匹配,‘[’和’]’匹配,‘{’和‘}’匹配,遍历输入的字符串,依次压入栈中,若待压入的字符和栈顶字符相匹配,则说明这是一对匹配的字符,则弹出栈顶字符,继续遍历。截至条件就是遍历结束后,若栈中没有字符则说明全部匹配正确,否则说明字符串匹配错误返回false。 实现代码如下:class Solution {public: boo

2017-07-25 20:06:58 140

原创 LeetCode(19)--Remove Nth Node From End of List

采用两个指针,一个快指针一个慢指针。快指针先走,直到指向第n+1位置,然后快慢指针一起走,直到快指针走到链表尾部,这时候慢指针指向的就是倒数第n+1位置,这样访问其next即可删除该节点。 实现代码如下: 需要注意的特殊情况是要删除的结点是头结点时,此时访问不了前一位,需要特别考虑。class Solution{public: ListNode* removeNthFromEnd(Li

2017-07-25 10:14:15 152

原创 LeetCode(15)--4Sum

题目分析: 这道题和2Sum类似,先固定两个数,再去从第二个数后开始从两头滑动,寻找到四个数和为target。但依然要注意的是重复的问题。实现代码如下:class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target){ vector<vector<int>> res = {}; i

2017-07-24 18:21:11 141

转载 LeetCode(17)--Letter Combinations of a Phone Number

转载自博客Letter Combinations of a Phone NumberGiven a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons

2017-07-24 15:53:12 266

原创 LeetCode(16)--3Sum Closest

该题与上一题有些类似,但是比上一道题简单很多,不需要考虑有没有重复的情况。因此大致思路如下: 先对数组进行排序,然后从头开始遍历直到nums.size()-2的每一个元素,对于每一个元素在此元素之后寻找两个元素使得三个数的和离target最近。实现代码如下:class Solution {public: int threeSumClosest(vector<int>& nums, int

2017-07-19 17:21:19 195

原创 LeetCode(15)--3Sum

题目:找到一组数字中,三个数之和为0的所有数。值得注意的就是不能有重复的组合。 思路: 如果是暴利搜索肯定会超时,所以首先对原数组进行排序,然后开始遍历排序后的数组,这里注意不是遍历到最后一个停止,而是到倒数第三个就可以了,中间如果遇到跟前一个数相同的数字就直接跳过。对于遍历到的数,如果大于0则跳到下一个数,因为三个大于0的数相加不可能等于0;否则用0减去这个数得到一个sum,我们只需要在这个数

2017-07-19 15:49:01 217

原创 LeetCode(14)--Longest Common Prefix

这道题,我用的就是一开始想到的笨办法,一开始提取前两个的公共字符串再接着与第三个相比,直到比完整个字符串vector。实现代码如下:class Solution {public: string longestCommonPrefix(vector<string>& strs) { string str; if (strs.size() == 0){/

2017-07-18 16:51:35 192

原创 LeetCode(13)-- RomanToInteger

这道题和上一道题刚好相反,是将罗马数字转变为整数型数字。可以发现一个规则就是当前一个字母小于下一位时则代表减去该数,如“IV”,此处的‘I’表示-1,而“VII”此处的‘I’表示+1,且因为一个字母最多重复三次,所以尽可能出现一次小数在大数前面,即不会出现“IIV”。因此利用该规律编写代码如下:class Solution {public: int romanToInt(string s)

2017-07-18 10:17:49 313

原创 支持向量机Python实现

SVM中C参数(松弛向量的系数)和gamma参数(RBF函数中的参数)的改变对分类效果的影响如下:from sklearn import datasetsimport numpy as npfrom sklearn.cross_validation import train_test_splitimport matplotlib.pyplot as pltfrom matplotlib.co

2017-07-17 22:33:41 746

原创 LeetCode(12)--Integer to Roman

罗马数字的规则如下: ·个位数举例 I, 1 II, 2 III, 3 IV, 4 V, 5 VI, 6 VII, 7 VIII, 8 IX, 9 ·十位数举例 X, 10 XI, 11 XII, 12 XIII, 13 XIV, 14 XV, 15 XVI, 16 XVII, 17 XVIII, 18 XIX, 19 XX, 20 XXI, 21 XXII, 22 XXIX, 29 XXX

2017-07-17 20:02:19 204

原创 LeetCode (11)-- Container With Most Water

Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lin

2017-07-17 11:00:40 162

转载 LeetCode(10)--RegularExpresssionMatching

方法转载自原博客 题目Implement regular expression matching with support for ‘.’ and ‘*’.样例‘.’ Matches any single character. ‘*’ Matches zero or more of the preceding element.The matching should cover the entir

2017-07-12 21:28:55 224

原创 回归算法的应用——信用卡欺诈检测案例

如下图是该数据集正负样本的分布情况,异常情况相比正常情况极少。 面对非平衡数据集时,有两种解决方案:过采样和下采样。 下采样: 让数量多的样本减少到和数量少的样本数量一样多。 过采样:生成数量少的样本,以平衡数据。下采样下采样代码:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom IPyth

2017-07-11 21:08:58 3845 1

原创 LeetCode(9)-- Palindrome Number

题目解析: 输入一个整型数据,判断其是否是回文的。 大概思路是将每一位都保存到一个string中,遍历string,取前后两头的字符进行对比,直到最中间。 不论数据是奇数还是偶数,都可以用str[m] != str[len - m - 1]来判断。C++实现如下:class Solution {public: bool isPalindrome(int x) { str

2017-07-11 18:34:41 168

原创 Pandas库基础操作

pandas主要用于数据的处理,在数据预处理方面用途比较多 如下为一些基本操作:import pandas as pdfood_info=pandas.read_csv("food_info.csv")print(type(food_info)) #food_info是Dataframe格式print(food_info.dtypes)#取food_info的前三行数据#print

2017-07-11 14:41:01 369

原创 Numpy基础操作

Numpy库的一些基础操作

2017-07-10 10:34:39 213

空空如也

空空如也

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

TA关注的人

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