自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一种用C++自带的类生成服从正态分布的随机数。

今天写关于深度学习的代码时,里面要用服从标准正态分布的随机数初始化权值,就是matlab里面那个randn函数,网上找了很多方法,最后发现C++本身就有自带的方法生成服从正态分布的随机数序列。下面给出C++代码: C++代码:#include <iostream>#include <string>#include <random>#include <iomanip>//设置精度#inclu

2016-06-30 19:02:28 12525

原创 LeetCode第56题之Merge Intervals

思路: 这题不难,先将区间进行“排序”,然后便历每个区间(下面代码中的cur)看是否与前面的区间(下面代码中的tmp)重合。分如下两种情况: (1) 如果重合,将tmp和cur区间合并为一个区间(更新tmp.end); (2) 如果不重合,则tmp为一个合并后的区段,保存tmp。 然而,我做这题的时候开始没有用将compare函数申明为static,然而运行不通过,通过百度之后发现

2016-06-29 16:23:56 477

原创 LeetCode第54题之Spiral Matrix

这题题的长和宽不等,所以有可能出现某一圈中有上边没有下边或者有右边没有左边的情况,因此在代码中我在相应位置加入了两个if语句来判断是否是上面的情况(某一圈中有上边没有下边或者有右边没有左边)。 C++代码:#include <iostream>#include <vector>using namespace std;class Solution {public: vector<int

2016-06-28 12:47:59 327

原创 大整数的相加、相减和相乘

#include <iostream>#include <string>using namespace std;string _sub(string s1, string s2);//比较两个正数的大小inline int compareData(const string &s1,const string &s2){ if (s1.length()>s2.length()) ret

2016-06-28 12:29:41 582

原创 LeetCode第53之 Maximum Subarray(两种方法)

解法一: 思路:最大子段和max_sum必是以某个下标为i的数结尾,遍历数组,如果当前子段和tmp_sum大于等于0,则nums[i]+tmp_sum一定不会比nums[i]小。#include <iostream>#include <vector>#include <limits>using namespace std;class Solution {public: int ma

2016-06-27 20:48:11 618

原创 LeetCode第51题之 N-Queens

思路主要是参考我以前的一篇博客:8皇后问题的两种解法,那篇博客思路写的还比较详细,建议看那篇博客。这里我只用第一种解法实现该题。 下面给出C++源代码:#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public: //检查在第k个位置的皇后是否与前k-

2016-06-25 13:09:29 338

原创 LeetCode第50.之Pow(x, n)

运用递归解,另外注意n的各种取值的情况。 C++代码:#include <iostream>#include <limits>using namespace std;class Solution {public: double myPow(double x, int n) { if (0 == n) return 1; else

2016-06-25 09:43:52 245

原创 LeetCode第49题之 Group Anagrams

分析:这道题如果按照 常规的思路几层for循环暴力求解会超时。这里我主要是利用将每个待处理的字符串排序后用哈希的思想将同构的字符串放在一起。 C++代码:#include <iostream>#include <algorithm>#include <string>#include <map>#include <vector>using namespace std;class Solut

2016-06-24 15:29:07 390

原创 LeetCode第47.题之Permutations II

这题和上一题唯一的差别是数组多了重复的元素,所以我首先想到的是STL中计算排列组合关系的算法(这是我以前写的一篇博客)(该算法也适合上一题),具体思想见那篇博客,下面我直接给出C++代码:#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {public:

2016-06-23 21:56:32 247

原创 LeetCode第46题之 Permutations

主要的思想(深度优先搜索)和我这篇博客一样:找出1到n所有不重复的排列,即n的全排列#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution { void fun(vector<int> &nums, vector<bool> &appear, vector<in

2016-06-23 20:21:35 308

转载 LeetCode第45之 Jump Game II

看了好几种算法实现,感觉这里说的最清楚,也比较简单,本算法思想也是来源于此。 解法看完这道题目,可能大部分的读者都能够想出这样一个相对简单的解法:将每个位置都看作一个点,并从第i个点向它之后的nums[i]个点都连一条长度为1的有向边,而现在的问题就是从0号点到达size-1号点需要的最短距离,这就是一个很简单的最短路问题,实际上由于边的长度均为1,而且不存在环,我们可以用宽度优先搜索(时间复杂度

2016-06-23 19:24:43 1172

原创 LeetCode第44题之 Wildcard Matching

思想主要参考这里,但那里是用char *保存的字符串,该字符串最后以’\0’字符结尾,故上述代码中p字符串不会越界。而现在字符串是用的string保存,需要讨论p字符串的下标是否越界。 C++代码:#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public:

2016-06-22 18:41:48 359

原创 LeetCode 43题之 Multiply Strings

详细的算法思路参见我以前的一篇博客:大整数相乘 C++代码:#include <iostream>#include <string>#include <vector>using namespace std;class Solution {public: //将原字符处转换成数组存放 vector<int> stoint(const string &s) {

2016-06-21 19:15:33 281

原创 LeetCode第42题之Trapping Rain Water

下面C++代码只需一遍遍历,具体分析见代码注释:#include <iostream>#include <vector>using namespace std;class Solution {public: int trap(vector<int>& height) { int sum = 0; int n = height.size();

2016-06-21 15:11:21 380

原创 LeetCode第40题之Combination Sum II

这一题主要是在上一题的基础上解决重复解的问题。 C++代码:#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {private: //res保存满足题意的结果 vector<vector<int>> res; //保存当前的一种方案

2016-06-20 19:17:34 363

原创 LeetCode第39题之Combination Sum(两种方法)

思路:两种方法都是利用递归回溯,第二方法在第一种方法的基础上对原始数据先进行排序,这样可以剪枝,加快计算速度。第一种方法在LeetCode上测试运行的时间是24ms,第二种方法运行时间为16ms。 方法一:#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {p

2016-06-18 12:27:00 712

原创 LeetCode第37之Sudoku Solver

主要思路:回溯法,每个‘.’的位置遍历“1-9”,如果满足则继续下一个位置,如果遍历完“1-9”仍不满足则将该位置改为‘.’,然后回溯到上一个位置。 缺点就是运行时间有点长。 C++代码:#include <iostream>#include <vector>using namespace std;//打印board矩阵void print_vec(vector<vector<char>>

2016-06-17 11:39:48 238

原创 LeetCode第34题之Search for a Range

C++代码:#include <iostream>#include <vector>using namespace std;class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> res(2, -1); int sz = nu

2016-06-16 15:40:07 364

原创 LeetCode第33题之 Search in Rotated Sorted Array

C++代码:#include <iostream>#include <vector>using namespace std;class Solution {public: int search(vector<int>& nums, int target) { int sz = nums.size(); int l = 0; int r =

2016-06-15 19:48:44 253

转载 32. Longest Valid Parentheses

主要参考:http://blog.csdn.net/feliciafay/article/details/20686595,该方法的时间复杂度为O(n)。 C++代码:class Solution { public: int longestValidParentheses(string s) { stack<int> paranStack; int

2016-06-14 20:27:57 255

原创 LeetCode第29题之Divide Two Integers

C++代码:#include <iostream>#include <limits>using namespace std;class Solution {public: int divide(int dividend, int divisor) { //将int转换成long long int可以省事,例如当被除数与除数分别为-2147483648、 1时,21474

2016-06-08 11:13:48 354

原创 LeetCode第26题之Remove Duplicates from Sorted Array

C++代码:#include <vector>#include <iostream>using namespace std;class Solution {public: int removeDuplicates(vector<int>& nums) { //j遍历数组,如果nums[j]在位置j之前第一次出现,则将它保存到i+1的位置 int sz =

2016-06-06 10:20:47 279

原创 LeetCode第25题之Reverse Nodes in k-Group

基本思想是对每k个节点采用头插法,时间复杂度为O(n)。 C++代码:#include <vector>#include <iostream>using namespace std;/** * Definition for singly-linked list. */ struct ListNode { int val; ListNode *next;

2016-06-04 13:22:12 260

原创 LeetCode第23题之Merge k Sorted Lists

C++代码:#include <vector>#include <iostream>#include <algorithm>using namespace std;/** * Definition for singly-linked list. */ struct ListNode { int val; ListNode *next; ListNode

2016-06-03 20:27:00 354

原创 LeetCode第21题之Generate Parentheses(两种解法)

C++代码:#include <vector>#include <iostream>#include <string>using namespace std;class Solution {private: //保存结果 vector<string> res;public: void fun(int deep, int n, int leftNum, int lef

2016-06-02 11:28:54 442

空空如也

空空如也

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

TA关注的人

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