自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kang_TJU的博客

潮平两岸阔,风正一帆悬

  • 博客(52)
  • 收藏
  • 关注

原创 Big Three设计原则学习

本文主要记录我对big three的粗浅理解,并且参考了[C++定式模型 - 解决Big Three问题的方法],对这一问题有了更深入的理解。问题什么是Big Three? 三法则(英语:rule of three,the Law of The Big Three,The Big Three;三法则,三大定律)在 C++ 程序设计里,它是一个以设计的基本原则而制定的定律,三法则的要求在于,假如类

2017-01-31 13:10:23 1108

原创 leetcode-492-Construct the Rectangle

问题题目:[leetcode-492]思路找质因数,如果平方根不行,从较大的一侧开始找即可。代码class Solution {public: vector<int> constructRectangle(int area) { std::vector<int> ret; int sqrt = std::sqrt(area); if(sqrt*

2017-01-29 23:35:58 418

原创 leetcode-167-Input array is sorted

问题题目:[leetcode-167]思路朴素的思路就是两层循环。但是TLE.代码(TLE)class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int sz = numbers.size(); std::vector<int> ret;

2017-01-27 15:35:26 370

原创 leetcode-141-Linked List Cycle

问题题目:[leetcode-141]思路如果有环,枚举过程中,存在节点的指针重复出现。用集合记录即可。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {

2017-01-25 14:47:45 319

原创 leetcode-83-Remove Duplicates from Sorted List

问题题目:[leetcode-83]思路前后指针,注意循环不变式。p的更新在不同分支不一样。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }

2017-01-24 19:39:56 347

原创 leetcode-24-Swap Nodes in Pairs

问题题目:[leetcode-24]思路注意循环设置的条件。只设置一个判断,一个跳出我觉得没什么意义。所以,都跳出。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N

2017-01-24 19:33:46 313

原创 leetcode-21-Merge Two Sorted Lists

问题题目:[leetcode-21]思路可以不用开辟额外空间的办法。当然,只限于单链表的情形。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *

2017-01-24 19:20:28 295

原创 leetcode-19-Remove Nth Node From End of List

问题题目:[leetcode-19]思路需要注意一点,当n==len的情形需要特殊处理。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };

2017-01-24 12:48:04 297

原创 leetcode-160-Intersection of Two Linked Lists

问题题目:[leetcode-160]思路朴素的思路,枚举就好了。两遍循环。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */cl

2017-01-21 22:47:28 371

原创 leetcode-217-Contains Duplicate

问题题目:[leetcode-217]思路借助集合即可。代码class Solution {public: bool containsDuplicate(vector<int>& nums) { std::set<int> set_nums; int sz = nums.size(); if(!sz) return false;

2017-01-21 01:16:50 332

原创 leetcode-242-Valid Anagram

问题题目:[Valid Anagram]思路排序跟哈希都可以,注意,长度不同直接返回就好。代码class Solution {public: bool isAnagram(string s, string t) { if( s.size() != t.size() ) return false; sort(s.begin(), s.en

2017-01-21 01:10:02 312

原创 leetcode-485-Max Consecutive Ones

问题题目:[leetcode-485]思路遍历计数就行。遇见0重新计数。代码class Solution {public: int findMaxConsecutiveOnes(vector<int>& nums) { int sz = nums.size(); if(!sz) return 0; int ans = 0; in

2017-01-20 22:45:36 288

原创 垂悬指针问题

问题垂悬指针问题,这个问题的定义我是指导的。通常是说当指向某块内存的指针被释放之后,需要及时置空。否则,如果不置空,当下次不小心访问到时,会导致错误。当然,这个问题说起来很简单。觉得也没什么太大的问题,但是指针这一块确实得非常小心,从下面我范的这个问题说起。下面这段代码是我刷leetcode的时候的一段代码,主要删除链表中重复的元素。当然下面的代码是正确的。/** * Definition for

2017-01-20 22:32:00 481

原创 leetcode-203-Remove Linked List Elements

问题题目:[leetcode-203]思路注意头结点的情形。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solu

2017-01-20 22:20:32 408

原创 leetcode-206-Reverse Linked List

问题题目:[leetcode-206]思路递归的时候注意:头结点的保存时机每次head->next = NULL;不要忘了修改代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x)

2017-01-20 20:13:33 439

原创 leetcode-273-Delete Node in a Linked List

问题题目:[leetcode-273]思路没有头结点,只能把下一个替换当前即可。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */

2017-01-20 19:59:58 381

原创 leetcode-453-Minimum Moves to Equal Array Elements

问题题目:[leetcode-453]思路这个题想了半天没想出来。 看了别人的帖子才会的,先把参考的帖子贴出来[LeetCode453题解]这个题麻烦主要是麻烦在每次只能是给n-1个元素+1。当然,显然的是每次肯定是最小的n-1个+1。想的到的办法就是模拟。觉得不可取。看了帖子之后得到的思路是:每次移动的肯定是最小的n-1个元素。但是这其实是相当于,把最大的元素-1。这一点我没有想到。所以,“移

2017-01-20 19:47:58 388

原创 leetcode-226-Invert Binary Tree

问题题目:[leetcode-226]思路递归解决即可。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),

2017-01-20 19:13:24 319

原创 leetcode-409-Longest Palindrome

问题题目:[leetcode-409]思路这个题也是思路要清晰,没有什么固定的算法。但是做起来要小心。记录每个字母出现次数判断: 出现偶数次,累加次数出现奇数次,累加次数-1最后,如果出现过奇数次,可以多加一个字符代码class Solution {public: int longestPalindrome(string s) { int sz = s.size

2017-01-20 18:51:01 373

原创 ubuntu搜狗输入法中文无法切换英文

问题之前不知道怎么安装中文输入法之后,无法切换英文了。设置了中英文切换也没用,如下图: 解决步骤我的问题出在fcitx下输入法配置的问题,先使用如下命令查看: fcitx-config-gtk3,打开Input-method-configuration.正常的情况下,应该有中文和英文和两种输入法。所以,如果只有中文,是没有办法进行切换的。真正的问题出在这里。 解决办法是在左下角点击’+’符

2017-01-20 14:16:32 21114 5

原创 DAG模型的动态规划学习

问题题目:[nyoj-16]思路代码(dfs-TLE)#include <iostream>#include <fstream>#include <vector>#include <algorithm>//#define LOCALstruct Rec{ int a_; int b_; Rec( int a = 0, int b = 0 ) : a_(a), b_(

2017-01-19 16:06:33 2366

原创 leetcode-229- Majority Element II

问题题目:[leetcode-229]思路参考[Major Element] 都是采用moore’s voting algorithm,只不过第一个问题是一定存在。但是本题不存在,投票完了之后需要验证。写代码需要注意一点:避免m和n重复的情形。 还有循环判断的顺序不能变!!!代码class Solution {public: vector<int> majorityElement(ve

2017-01-18 15:38:51 306

原创 leetcode-169-Major Element

问题题目:[leetcode-169]思路哈希表。代码class Solution { public: int majorityElement(vector& nums) { int sz = nums.size(); std::map<int, int> counter; for(int i = 0; i < sz; ++i){ coun

2017-01-18 12:38:07 459

原创 leetcode-171-Excel Sheet Column Number

问题题目:[leetcode-171]思路二十六进制转换为十进制,按权展开即可。代码class Solution {public: int titleToNumber(string s) { int sz = s.size(); int ret = 0; for( int i = sz - 1, base = 1; i >= 0; --i, b

2017-01-18 12:22:34 362

原创 python网络分析-network第一版的封装

本文主要是对我在写实验的时候所用到的networkx进行的一个初步的封装。其实不是很标准,现在再写第二版。先把之前的代码贴上来。主要参考的文档就是networkx的官方文档。 [networkx-reference]我需要说明一点,下面的代码针对的是无向图。代码下面这一部分代码是对networkx的初步封装。GraphOperation.py#-*- coding:utf-8 -*-impo

2017-01-17 23:45:07 2597

原创 leetcode-168-Excel Sheet Column Title

问题题目:[leetcode-168]思路刚上来已知每反应过来,做题的时候需要注意一点。在分析问题的时候,如果不能直接解决。需要考虑转化问题,即问题的本质是什么。这个题目,本质就是进制转换。想到这问题就解决了。注意:转换的时候需要对mod修正。代码class Solution {public: string convertToTitle(int n) { std::stri

2017-01-17 15:23:37 510

原创 leetcode-100-SameTree

问题题目:[leetcode-100]思路典型的递归判断即可。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool isSameTree(st

2017-01-16 23:04:02 490

原创 leetcode-404-Sum of Left Leaves

问题题目:[leetcode-404]思路这个题刚开始想用递归写,一时每反应过来。 然后想层次遍历,一时又没反应过来。 其实,基本的算法还是遍历。层次遍历即可,但是只要左叶子。 所以,我考虑加标签,主要是想模仿线索二叉树。然后写了一个结构,加了是左孩子右孩子的标签。问题搞定。代码/** * Definition for a binary tree node. * struct TreeNo

2017-01-16 22:57:26 336

原创 leetcode-387-First Unique Character in a String

问题题目:[leetcode-387]思路思路很简单,首先枚举一遍。记录hash值。然后,还是根据s进行枚举,找到hash值为1的返回即可。 关键是一定要按照s的顺序进行枚举。代码class Solution {public: int firstUniqChar(string s) { int hash[128]; std::memset( hash, 0

2017-01-16 22:44:35 268

原创 leetcode-350-Intersection of Two Arrays II

问题题目:[leetcode-350]思路感觉这道题比之前那道更简单,都不用考虑重复的情形。 当然用集合还是最快,我试了下两个指针也可以。代码class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { int i = 0; int j = 0

2017-01-14 13:08:47 500

原创 leetcode-349-Intersection of Two Arrays

问题题目:[leetcode-349]思路朴素的思路就是让一个数组的元素去枚举另外一个数组的元素,如果存在。则是交集元素。但是要注意的是可能存在元素重复的情形。比如A = [1,1], B = [1]。代码class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {

2017-01-14 12:43:15 506

原创 leetcode-383-Ransom Note

问题题目:[leetcode-383]思路哈希表记录一下。代码class Solution {public: bool canConstruct(string ransomNote, string magazine) { int hash[128]; std::memset( hash, 0, sizeof(hash) ); int sz_m

2017-01-13 16:05:14 252

原创 leetcode-231-Power of Two

问题题目:[leetcode-231]思路n&(n-1)的妙用。 它的作用是把位向量当中,最低位的1置0;代码class Solution {public: bool isPowerOfTwo(int n) { return ( n > 0 && !(n&(n-1)) ); }};

2017-01-13 15:53:25 230

原创 leetcode-476- Number Complement

问题题目:[leetcode-476]思路朴素的思路没什么好说的。转化成位向量的形式去做。代码(位向量)class Solution {public: int findComplement(int num) { int bit[32]; std::memset( bit, 0, sizeof(bit) ); int idx = 0;

2017-01-13 15:10:21 426

原创 leetcode-477-Total Hamming Distance

问题题目:[leetcode-477]思路这个题上来我先朴素的做法,结果TLE。其实也能想到,只不过没有想到更好的办法。餐卡了这篇文档的思路[Total Hamming Distance]得到的思路。判断数组中所有元素的某一位计算该位1的个数m计算该位0的个数n该位产生的hammingDistance个数m*n重复上面过程直到所有位判断。代码/*从每一位去考虑了:每一位可能产生的ham

2017-01-13 11:53:52 350

原创 leetcode-191- Number of 1 Bits

问题题目:[leetcode-191]思路比较简单,移位操作。代码class Solution {public: int hammingWeight(uint32_t n) { int ans = 0; while( n ){ if( n&1 ) ++ans; n >>= 1; }

2017-01-13 11:15:32 444

原创 leetcode-137-Single Number II

问题题目:[leetcode-137]思路这个题的思路比较通用,对于出现k次的也一样可以处理。这个题的思路是位运算,但是并没有用到常用的位运算符。主要是位运算的思想在里面。具体步骤如下:对于每一个数用位向量表示。统计所有数字各个位的和。最后,位向量每一位模k进行上面的操作之后,剩下的位向量就是出现一次的那个数的位向量表示。还原回来就行。不过,做的时候有坑。要小心。 下面先贴一段错误代码代码

2017-01-13 09:58:46 405

原创 leetcode-260-SingleNumber III

问题题目:[leetcode-260]思路可参考这个链接[数组中只出现1次的两个数字(百度面试题)]。下面是我自己的总结:首先,对于只有一个不同的数字的情形。xor可以解决。但是对于本题,由于出现两个只出现一次的数字。所以,xor的结果是最后这两个数字的xor结果。所以,直接这么做不可以。不妨这么考虑,由于a和b是出现在同一个数组中。所以没法分开,如果把它们分到不同的数组中,对于这两个不同的数组而言

2017-01-10 16:36:07 238

原创 python语言-目录操作

本文总结下这两天写代码遇见的python目录操作。直接上代码。常见目录操作获取目标目录下的目录文件和非目录文件#-* coding: utf-8 -*-import tracebackimport os# 目录操作类class DirOperation: """ 功能:返回目标目录下的目录文件和非目录文件 @root_path: 目标目录 @dir_list:

2017-01-09 22:53:25 299

原创 python网络分析-数据集汇总

本文给出平常实验当中经常使用的网络数据集。都是开放数据集。下面直接上链接了!数据集[Stanford Large Network Dataset Collection]非常经典的数据集,承包了研二上数据实验报告。

2017-01-09 21:54:33 1009

空空如也

空空如也

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

TA关注的人

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