每周一道算法题
每个星期精选一道关于程序算法的题目,提供解答并且进行分析和探讨。
Lnho
发表是最好的记忆
展开
-
数独的Java版解法
最近偶尔有玩数独,有的题太复杂了不好解,刚好看到LeetCode上有这样的题,就尝试写了个Java的解法。1. 数独介绍数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。左边是数独的题目,右边是完成后的结果。 2.原创 2017-11-25 15:27:54 · 7671 阅读 · 0 评论 -
Leet Code OJ 3. Longest Substring Without Repeating Characters
题目Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with the原创 2017-02-14 14:16:01 · 1461 阅读 · 0 评论 -
Leet Code OJ 4. Median of Two Sorted Arrays [Difficulty: Hard]
题目There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1:nums1 = [1, 3]nums原创 2017-02-10 07:36:39 · 831 阅读 · 0 评论 -
Leet Code OJ 388. Longest Absolute File Path [Difficulty: Medium]
题目Suppose we abstract our file system by a string in the following manner:The string “dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext” represents:dir subdir1 subdir2 file.ext The dir原创 2017-02-06 13:16:33 · 932 阅读 · 1 评论 -
Leet Code OJ 482. License Key Formatting [Difficulty: Medium]
给定一个非空字符串S,代表一个软件授权秘钥,我们需要格式化这个秘钥。这个字符串由字母、数字(a-z and/or A-Z and/or 0-9)和中划线(-)组成。中划线把字符串S分为几个组(例如有M个中划线,那会被分为M+1个组)。现在,中划线放置的位置可能被放错了。我们希望每个组的字符长度为整数K(除了第一个组,允许少于K,但是至少要有一个字符)。为了满足这个需求,我们需要重新放置中划线。另外,还需要把所有小写原创 2017-02-04 06:28:32 · 1919 阅读 · 0 评论 -
Leet Code OJ 91. Decode Ways [Difficulty: Medium]
题目: A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total number原创 2016-06-24 13:57:28 · 5371 阅读 · 0 评论 -
Leet Code OJ 344. Reverse String [Difficulty: Easy]
题目: Write a function that takes a string as input and returns the string reversed. Example: Given s = “hello”, return “olleh”.翻译: 写一个函数,使用字符串作为输入,返回它反转后的结果。 例如,输入”hello”,返回”olleh”。分析: 转为字符数组后,将第一原创 2016-06-23 13:50:55 · 3713 阅读 · 0 评论 -
Leet Code OJ 15. 3Sum[Difficulty: Medium]
题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: Elements in a triplet (a,b,c) must原创 2016-05-04 13:21:46 · 6582 阅读 · 0 评论 -
Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
题目: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.翻译: 实现一个方法strStr()。返回字符串needle第一次在字符串haystack出现的下标,如果needle不是haysta原创 2016-04-28 16:46:25 · 4477 阅读 · 0 评论 -
Leet Code OJ 14. Longest Common Prefix [Difficulty: Easy]
题目: Write a function to find the longest common prefix string amongst an array of strings.翻译: 写一个函数去找到在字符串数组里面的最长的前缀字符串。分析: 首先考虑字符串数组的length为0和为1的情况,为1的情况如果不预先处理,后面判断起来会比较麻烦。然后需要找出这些字符串的最短的长度,超过这个长度原创 2016-03-25 18:36:12 · 1534 阅读 · 0 评论 -
Leet Code OJ 125. Valid Palindrome [Difficulty: Easy]
题目: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example, “A man, a plan, a canal: Panama” is a palindrome. “race a car” is not原创 2016-03-25 13:20:39 · 2927 阅读 · 0 评论 -
Leet Code OJ 20. Valid Parentheses [Difficulty: Easy]
题目: Given a string containing just the characters , determine if the input string is valid.The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.翻译:原创 2016-03-24 13:22:19 · 4907 阅读 · 0 评论 -
Leet Code OJ 2. Add Two Numbers [Difficulty: Medium]
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a原创 2016-03-23 13:48:25 · 4338 阅读 · 0 评论 -
Leet Code OJ 119. Pascal's Triangle II [Difficulty: Easy]
题目: Given an index k, return the kth row of the Pascal’s triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra space?翻译: 给定一个下标k,返回第原创 2016-03-22 13:54:14 · 1250 阅读 · 2 评论 -
Leet Code OJ 118. Pascal's Triangle [Difficulty: Easy]
题目: Given numRows, generate the first numRows of Pascal’s triangle. For example, given numRows = 5, Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]翻译: 给定一个数numRows,产生前numRows行的原创 2016-03-22 11:32:42 · 1510 阅读 · 0 评论 -
Leet Code OJ 8. String to Integer (atoi) [Difficulty: Easy]
题目: Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input ca原创 2016-03-22 10:43:59 · 10397 阅读 · 2 评论 -
Leet Code OJ 338. Counting Bits [Difficulty: Medium]
题目: Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s in their binary representation and return them as an array. Example: For num = 5原创 2016-03-18 18:32:33 · 1779 阅读 · 0 评论 -
Leet Code OJ 203. Remove Linked List Elements [Difficulty: Easy]
题目: Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5翻译: 从一个整数链表中移除所有value为val的元素。 例如 给定原创 2016-03-17 23:35:10 · 1409 阅读 · 0 评论 -
Leet Code OJ 107. Binary Tree Level Order Traversal II [Difficulty: Easy]
题目: Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).For example: Given binary tree {3,9,20,#,#,15,7},原创 2016-03-17 20:30:17 · 1405 阅读 · 0 评论 -
Leet Code OJ 88. Merge Sorted Array [Difficulty: Easy]
题目: Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold addit原创 2016-03-17 13:17:21 · 2811 阅读 · 0 评论 -
Leet Code OJ 110. Balanced Binary Tree [Difficulty: Easy]
题目: Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never diffe原创 2016-03-16 14:02:13 · 1711 阅读 · 0 评论 -
Leet Code OJ 1. Two Sum [Difficulty: Easy]
题目: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example: Given nums = [2, 7原创 2016-03-14 20:33:57 · 33038 阅读 · 3 评论 -
Leet Code OJ 191. Number of 1 Bits [Difficulty: Easy]
题目: Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11’ has binary representation 00000000原创 2016-03-14 15:05:14 · 1020 阅读 · 0 评论 -
Leet Code OJ 260. Single Number III [Difficulty: Medium]
题目: Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example:Given nums =原创 2016-03-09 17:50:41 · 880 阅读 · 0 评论 -
Leet Code OJ 102. Binary Tree Level Order Traversal [Difficulty: Easy]
题目: Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example: Given binary tree {3,9,20,#,#,15,7}, return its level order tr原创 2016-03-08 13:44:19 · 2201 阅读 · 0 评论 -
Leet Code OJ 26. Remove Duplicates from Sorted Array [Difficulty: Easy]
题目: Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with原创 2016-03-08 13:19:39 · 1543 阅读 · 2 评论 -
Leet Code OJ 326. Power of Three [Difficulty: Easy]
题目: Given an integer, write a function to determine if it is a power of three.Follow up: Could you do it without using any loop / recursion?翻译: 给定一个整数,写一个函数去判断它是否是3的幂。 更进一步:你能不适用循环或者递归来完成吗?代码:publi原创 2016-03-07 16:11:32 · 1040 阅读 · 0 评论 -
Leet Code OJ 219. Contains Duplicate II [Difficulty: Easy]
题目: Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.翻译: 给原创 2016-03-07 14:11:58 · 1132 阅读 · 0 评论 -
Leet Code OJ 235. Lowest Common Ancestor of a Binary Search Tree [Difficulty: Easy]
题目: Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined betwee原创 2016-03-07 13:47:14 · 1120 阅读 · 0 评论 -
Leet Code OJ 223. Rectangle Area [Difficulty: Easy]
题目: Find the total area covered by two rectilinear rectangles in a 2D plane.Each rectangle is defined by its bottom left corner and top right corner as shown in the figure. Assume that the total ar原创 2016-03-07 13:18:18 · 1245 阅读 · 0 评论 -
Leet Code OJ 172. Factorial Trailing Zeroes [Difficulty: Easy]
题目: Given an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity.翻译: 给定一个整数n,返回n!末尾的0的个数。 提示:你的解决方案应该运行在O(log(n))的时间复杂度。分析: 我们知道要形成一个末原创 2016-03-07 12:24:54 · 1213 阅读 · 0 评论 -
Leet Code OJ 189. Rotate Array [Difficulty: Easy]
题目: Rotate an array of n elements to the right by k steps.For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].Note: Try to come up as many solutions as you can,原创 2016-03-05 23:18:27 · 1002 阅读 · 0 评论 -
Leet Code OJ 328. Odd Even Linked List [Difficulty: Easy]
题目: Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.You should try to do it in原创 2016-03-05 21:52:39 · 1534 阅读 · 0 评论 -
Leet Code OJ 268. Missing Number [Difficulty: Medium]
题目: Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.For example, Given nums = [0, 1, 3] return 2.Note: Your algorithm should run in原创 2016-03-04 18:16:07 · 1231 阅读 · 0 评论 -
Leet Code OJ 66. Plus One [Difficulty: Easy]
题目: Given a non-negative number represented as an array of digits, plus one to the number.The digits are stored such that the most significant digit is at the head of the list.翻译: 给定一个非负数,它是有数字的数组组成,原创 2016-03-04 16:41:04 · 1308 阅读 · 0 评论 -
Leet Code OJ 58. Length of Last Word [Difficulty: Easy]
题目: Given a string s consists of upper/lower-case alphabets and empty space characters ’ ‘, return the length of last word in the string.If the last word does not exist, return 0.Note: A word is defin原创 2016-03-04 13:53:36 · 1230 阅读 · 0 评论 -
Leet Code OJ 27. Remove Element [Difficulty: Easy]
题目: Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn’t matter what you leave beyond the new length.翻译:原创 2016-03-04 13:40:30 · 2484 阅读 · 0 评论 -
Leet Code OJ 83. Remove Duplicates from Sorted List [Difficulty: Easy]
题目: Given a sorted linked list, delete all duplicates such that each element appear only once.For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.翻译: 给定一个排序号的链表,删除所有的重复元素,保原创 2016-03-04 13:15:36 · 1274 阅读 · 0 评论 -
Leet Code OJ 21. Merge Two Sorted Lists [Difficulty: Easy]
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.翻译: 合并2个已经排序的链表,并且返回一个新的链表。这个新的链表应该由前面提到的2个链表的节点所组成。分析原创 2016-03-04 13:04:41 · 3893 阅读 · 0 评论 -
Leet Code OJ 206. Reverse Linked List [Difficulty: Easy]
题目: Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively. Could you implement both?翻译: 反转一个单链表。分析: 可以先尝试通过简单例子画图分析,来弄清如何修改指向。代码:/** * Definition for原创 2016-03-03 20:03:06 · 1181 阅读 · 0 评论