127. Word Ladder 这道题使用bfs来解决,每次将满足要求的变换单词加入队列中. wordSet用来记录当前词典中的单词,做一个单词变换生成一个新单词,都需要判断这个单词是否在词典中,不在词典中就不能加入队列. pathCnt用来记录遍历到的某一个词使用的次数,做一个单词变换生成一个新单词,都需要判断这个单词是否在pathCnt中,如果在,则说明之前已经达到过,这次不用再计算了,因为这次计算的path肯定比之前多.pathCnt相当于剪枝. class Solution { pub…
# python如何转换word格式.读取word内容.转成html? import docx from win32com import client as wc # 首先将doc转换成docx word = wc.Dispatch("Word.Application") doc = word.Documents.Open(r"D:\\demo.doc") #使用参数16表示将doc转换成docx doc.SaveAs(r"D:\\most.docx&qu…
https://www.cnblogs.com/grandyang/p/4332313.html 在一个矩阵中能不能找到string的一条路径 这个题使用的是dfs.但这个题与number of islands有点不同,那个题中visited过的就不用再扫了,但是这个需要进行回溯回来. 所以使用了visited[i][j] = false; 本质区别还是那个题是找一片区域,这个题更像是找一条路径. 错误一:如果board不引用,会报超内存 错误二: 这个写法和正确写法基本相同,但错误写法需要每次…
139. Word Break 字符串能否通过划分成词典中的一个或多个单词. 使用动态规划,dp[i]表示当前以第i个位置(在字符串中实际上是i-1)结尾的字符串能否划分成词典中的单词. j表示的是以当前i的位置往前找j个单词,如果在j个之前能正确分割,那只需判断当前这j单词能不能在词典中找到单词.j的个数不能超过词典最长单词的长度,且同时不能超过i的索引. 初始化时要初始化dp[0]为true,因为如果你找第一个刚好匹配成功的,你的dp[i - j]肯定就是dp[0].因为多申请了一个,所以d…
169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int majorityElement(vector<int>& nums) { unordered_map<int,int> count; int n=nums.size(); ;i<n;i++){ ) return nums[i]; } ; } }; 使用投票法,时间复杂度为O(…
54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1)这种开始的. 用endx.endy来表示每次转圈的x.y方向的终止位置,方便后面进行边界条件设置. 注意:后面start < endx && start < endy.start < endy && start < endx-1都必须同时满足x.y的条…
263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 .3.5整除,即能被整除才去除这些数 class Solution { public: bool isUgly(int num) { ) return false; == ) num /= ; == ) num /= ; == ) num /= ; ? true : false; } }; 264. Ugly Number II 用一个数组去存第n个前面的所有整数,然后…
344. Reverse String 最基础的旋转字符串 class Solution { public: void reverseString(vector<char>& s) { if(s.empty()) return; ; ; while(start < end){ char tmp = s[end]; s[end] = s[start]; s[start] = tmp; start++; end--; } return; } }; 541. Reverse Strin…
131. Palindrome Partitioning substr使用的是坐标值,不使用.begin()..end()这种迭代器 使用dfs,类似于subsets的题,每次判断要不要加入这个数 start每次是起始的位置,判断当前位置到起始位置是不是回文 class Solution { public: vector<vector<string>> partition(string s) { vector<vector<string> > result;…
Wiggle Sort: 注意:解法一是每次i增加2,题目不是保证3个3个的情况,而是整个数组都要满足要求. 解法一错误版本: 如果nums的长度是4,这种情况下nums[i+1]会越界.但是如果你用的是i和i-1的组合,一定可以不会越界,因为i不越界i-1就一定不会越界,for循环控制i,i越界了整个循环就结束了. class Solution { public: void wiggleSort(vector<int>& nums) { sort(nums.begin(),nums.…