练习
文章平均质量分 53
qq_38959715
这个作者很懒,什么都没留下…
展开
-
Java/500. Keyboard Row 键盘行
题目 代码部分一(2ms 99.4%)class Solution { List<String> list = new ArrayList(); public String[] findWords(String[] words) { String frist = "QWERTYUIOPqwertyuiop"; ...转载 2018-09-21 17:10:46 · 648 阅读 · 0 评论 -
Java/897. Increasing Order Search Tree 递增顺序查找树
题目 代码部分(70ms)class Solution { List<Integer> list = new ArrayList(); public TreeNode increasingBST(TreeNode root) { if(root == null) return root; ...转载 2018-09-06 10:00:22 · 1050 阅读 · 0 评论 -
Java/896. Monotonic Array 单调数列
题目 代码部分(27ms)class Solution { boolean res = true; public boolean isMonotonic(int[] A) { if(A == null || A.length == 0) return res; boolean index = true;...转载 2018-09-06 08:55:17 · 523 阅读 · 0 评论 -
Java/606. Construct String from Binary Tree 根据二叉树创建字符串
题目 代码部分一(34ms)class Solution { public String tree2str(TreeNode t) { if(t == null) return ""; if(t.left == null && t.right == null) ...转载 2018-09-09 10:38:44 · 660 阅读 · 0 评论 -
101.Symmetric Tree 对称二叉树
题目代码部分一:class Solution { boolean res = true; public boolean isSymmetric(TreeNode root) { if(root == null){ return true; }else if(root.left == null &&am...转载 2018-09-05 16:19:19 · 362 阅读 · 0 评论 -
112.Path Sum 路径总和
Path Sum I 路径总和 I代码部分一(0ms):class Solution { boolean res = false; public boolean hasPathSum(TreeNode root, int sum) { if(root == null) return false; int coun...转载 2018-09-04 21:48:15 · 484 阅读 · 0 评论 -
Java/886.可能的二分法(Possible Bipartition)
这道题花了不少时间,一开始没有找对方法,以为直接遍历就完了。吃了大亏后,查了不少资料才知道要用染色(覆盖)算法来做——(有贪心算法和回溯算法两种)此处我用的是回溯算法。class Solution { private Map<Integer , List<Integer>> graph = new HashMap<>(); // 图存...转载 2018-08-29 20:02:11 · 892 阅读 · 0 评论 -
Java/888.两句话中不常见的单词
先上题目 代码部分 一、9msclass Solution { public String[] uncommonFromSentences(String A, String B) { String[] splitA = A.split(" "); String[] splitB = B.split(" "); ...原创 2018-08-12 12:15:31 · 870 阅读 · 1 评论 -
Java/46、47(全排列 I、II) PermutationsI、II
Permutations I先上题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]代码部分class Solution { List<List<Integer>>...原创 2018-07-20 21:45:44 · 903 阅读 · 0 评论 -
Java/299.(求众数II) Majority Element II
先上题目Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.Note: The algorithm should run in linear time and in O(1) space.Example 1:Input: [3,2,3]Output: [3]Example ...原创 2018-07-15 09:10:39 · 605 阅读 · 0 评论 -
Java/907. 子数组的最小值之和
题目 代码部分一(389ms)class Solution { long res = 0; long mod = 1000000007; // 案模, res % mod 得到溢出后的想要的数 ...转载 2018-09-17 14:56:20 · 1397 阅读 · 0 评论 -
905. 按奇偶校验排序数组
题目 代码部分一(18ms)class Solution { public int[] sortArrayByParity(int[] A) { List<Integer> odd = new ArrayList(); // 储存奇数位 List<Integer> even = new Ar...转载 2018-09-17 15:09:44 · 1226 阅读 · 0 评论 -
Java/563.Binary Tree Tilt 二叉树的坡度
题目 代码部分(5ms)class Solution { int treeTilt = 0; public int findTilt(TreeNode root) { dfs(root); return treeTilt; } public int dfs(TreeNode node){ ...转载 2018-09-15 15:29:43 · 583 阅读 · 0 评论 -
Java/653. Two Sum IV - Input is a BST 两数之和 IV - 输入 BST
题目 代码部分一(592ms)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * }...转载 2018-09-11 10:16:10 · 493 阅读 · 0 评论 -
Java/909. Snakes and Ladders 爬坡和梯子
题目 代码部分二(18ms)class Solution { public int snakesAndLadders(int[][] board) { int n = board.length; int[] b = new int [n*n+1]; boolean flag = true; ...转载 2018-09-24 17:56:56 · 1507 阅读 · 0 评论 -
Java/ 910. Smallest Rangle II 最小差值 II
题目 代码部分一(16ms)class Solution { public int smallestRangeII(int[] A, int K) { Arrays.sort(A); int len = A.length; int res = A[len-1] - A[0]; ...转载 2018-09-23 17:46:45 · 960 阅读 · 0 评论 -
Java/908. Smallest Range I 最小差值
题目 代码部分一(6ms)class Solution { public int smallestRangeI(int[] A, int K) { int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int i : A)...转载 2018-09-23 16:36:04 · 839 阅读 · 0 评论 -
Java/690.Employee Importance 员工的重要性
题目 代码部分(25ms BFS)class Solution { int res = 0; Employee employee; public int getImportance(List<Employee> employees, int id) { findId(employees, id); ...转载 2018-09-18 11:30:48 · 810 阅读 · 0 评论 -
Java/501. Find Mode in Binary Search Tree 二叉搜索树中的众数
题目 代码部分一(11ms)class Solution { Map<Integer, Integer> map = new HashMap(); int counter = 0; //计数器,记录众数出现的次数 public int[] findMode(TreeN...转载 2018-09-13 12:22:04 · 694 阅读 · 0 评论 -
Java/905.超级回文数 superpalindromes
题目 代码部分一(93ms)class Solution { int res = 0; int[] nums = new int[50]; //存储一个字符串的各个位数 public int superpalindromesInRange(String L, String R) { ...转载 2018-09-17 19:04:49 · 1221 阅读 · 0 评论 -
Java/538. Convert BST to Greater Tree 把二叉搜索树转换成累加树
题目 代码部分(17ms)class Solution { int sum = 0; public TreeNode convertBST(TreeNode root) { if(root == null) return null; convertBST(root.right); s...转载 2018-09-10 18:56:12 · 594 阅读 · 0 评论 -
Java/169.(求众数) Majority Element
先上题目Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋times.You may assume that the array is non-empty and the majority element alw...原创 2018-07-15 00:27:32 · 642 阅读 · 0 评论 -
C语言/693.(交替二进制数) Binary Number with Alternating Bits
先上题目思路:1.将输入数转换为二进制(此处采用循环%2)2.得到的每一位数与下一位数next_number相比,相同直接返回false;不同则result=true;循环结束后返回result代码部分bool hasAlternatingBits(int n) { int number,next_number; bool result=false; while(n){ ...原创 2018-07-08 00:20:45 · 464 阅读 · 0 评论 -
C语言/476.(数字的补数) Number Complement
先上题目思路:补数如题所述,该数二进制取反。我尝试了一下直接整数异或发现不行。这里使用常规做法,取得一个整数,先将整数转换为二进制数(此处使用循环%2取余),得到二进制数的每一位的同时进行计算转换为整数。注意:得到的第一个数是最低位的二进制数,逐个往高位走,所以我们可以增加一个计数变量,判断每次循环得到的数需乘以2的几次方。代码部分:int findComplement(int num) { ...原创 2018-07-02 10:38:16 · 974 阅读 · 0 评论 -
C语言/832.(翻转图像)Flipping an Image
先上题目思路,暴力做法,循环头尾逐个移动到中间,同时进行交换。#include <stdio.h>#include <string.h>int main(){ int i,j,AIlen,AJlen,temp,Jtemp; int A[5][5]={{1,0,0,1,0},{1,0,1,1,0},{1,1,1,1,0},{1,0,1,1,1},{0,0...原创 2018-07-01 15:31:04 · 1212 阅读 · 0 评论 -
C语言/657.(判断路线成圈)Judge Route Circle
先上题目:思路:坐标问题,二维坐标,可以从互逆方向上是否能达到平衡判断。所以可以将其处理成两个方向变量问题,判断变量最终是否发生变化。代码部分:bool judgeCircle(char* moves) { int UD,LR,i; UD=LR=i=0; while(moves[i]!='\0'){ switch(moves[i]){ ...转载 2018-07-01 15:21:09 · 380 阅读 · 0 评论 -
C语言/461.(汉明距离)Hamming Distance
先上题目 思路:两个整数的二进制表示形式之间,不同的位数的“数量”。两种方式,一、先转换为二进制,逐位比较。二、先将两个整数进行^(异或,相同为零,不同为1),同时进行计数可以求出相同或不同的数量。 代码部分:int hammingDistance(int x, int y) { int n,temp,count=0; //count为计数...转载 2018-07-01 15:07:59 · 1856 阅读 · 0 评论 -
C语言/771.宝石与石头
在做这道题的时候,发现了一个细节。这个细节可以提高我们的算法效率(本题中12ms—>4ms),多积累能帮助我们写出更高效的代码吧原创 2018-06-26 13:37:13 · 1183 阅读 · 0 评论 -
C语言/7.反转整数
先上问题:思路:这道题非常类似于回文数的数字解法,逐个取数即可。重点在于限制输出数值范围,第一种直接限制数值范围int reverse(int x) { int temp,result=0;; if(x>1534236461||x>=2147483642||x<(-2147483641)) return 0; while(x){ temp=...原创 2018-06-25 09:26:58 · 1805 阅读 · 2 评论 -
C语言/28.实现strStr()
先上题目:思路:暴力解法(for循环遍历),这道题没有做好,效率太低,勉强通过了。后续更换答案int strStr(char* haystack, char* needle) { int i,j,result=-1; if(needle[0]=='\0') return 0; if(strstr(haystack,needle)==NULL) return -1; ...原创 2018-06-24 11:03:36 · 678 阅读 · 0 评论 -
C++/38.整数递增序列报数
先上题目思路:这道题重点在于正确读懂题目,最简单理解是,给一个数,输出一个字符串。给的数是整数序列,这点很关键,序列!!!即第几个数。分析示例的时候,其实就是说1->11,11->21,21->1211,1211->111221,这相当于一个演变过程,假设我要求第五个,就要从第一个开始演变到序列5。 不说废话了,下面代码思路就是:用一个while()控制演变次...原创 2018-06-22 17:26:52 · 667 阅读 · 0 评论 -
13.C语言/罗马数字转整数
先上题目:思路:这道题比较容易,关键在于I,X,C的运算会受后一位(右边一位)数字的影响。int romanToInt(char* s) { int i,result=0; for(i=0;i<strlen(s);i++){ if(s[i]=='I') if(s[i+1]=='V'||s[i+1]=='X') ...原创 2018-06-22 00:05:27 · 1914 阅读 · 0 评论 -
C语言/344.(反转字符串) Reverse String
先上题目思路:分别从头尾出发逐个读取字符,并将二者交换。当right>left时,反转完成。代码部分char* reverseString(char* s) { int i,len=strlen(s)-1; char temp; for(i=0;i<=len;i++,len--){ temp=s[i]; s[i]=s[len];...原创 2018-07-02 10:54:02 · 713 阅读 · 0 评论 -
C语言、Java/867.(回文素数) Prime Palindrome
先上问题求出大于或等于 N 的最小回文素数。回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。例如,2,3,5,7,11 以及 13 是素数。回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数。例如,12321 是回文数。代码部分一(实现但耗费时间过长,时间超出)class Solution { public int primePalindro...原创 2018-07-08 22:55:34 · 973 阅读 · 0 评论 -
Java/566.(重塑矩阵) Reshape the Matrix
先上问题在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: nums ...原创 2018-07-09 21:57:58 · 740 阅读 · 0 评论 -
C语言/283.(移动零) Move Zeroes
先上题目 思路1.读取数组过程,计算数组中"0"的个数2.读取数组过程,设置标签index记录非"0"元素下标3.读取数组过程,按标签存入元素,最后在末尾补"0"代码部分void moveZeroes(int* nums, int numsSize) { int i,count=0,index=0; for(i=0;i<numsSize;i++){ if(nu...原创 2018-07-08 00:10:31 · 420 阅读 · 0 评论 -
C语言、Java/561.(数组拆分I) Array Partition I
先上题目思路:1.将数组排序2.将2n的数组分为n组3.计算最大和代码部分(C语言 )int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int arrayPairSum(int* nums, int numsSize) { int i,j,temp,len,result=0; ...原创 2018-07-06 21:28:34 · 516 阅读 · 0 评论 -
Java/463.(岛屿的周长) Island Perimeter
先上题目思路:前提(只存在一个小岛)1.遍历数组,找出所有单位土地2.分别计算所有单位土地的周长3.计算总和代码部分class Solution { public int islandPerimeter(int[][] grid) { int i,j,temp,result=0; for(i=0;i<grid.length;i++){ ...原创 2018-07-06 15:53:10 · 652 阅读 · 0 评论 -
Java/695.(岛屿的最大面积) Max Area of Island
先上题目思路:在数组里面寻找相连的1的个数,很容易联想到递归方法(或图的广度遍历)。首先对数组进行循环,遇到“1”时开始计算面积,通过递归方法。(这里需要注意的是要对”垂直“,“水平”,即”上“,”下“,”左“,”右“进行寻找,只对两个方向遍历会遗漏遍历 ,如[[0,1][1,1]]。并且为了使已经遍历过的不再重复计算,在遍历后将其赋值为“0”表示已经遍历过了)。最后得出每次计算面积中的最大值即可...原创 2018-07-06 11:17:18 · 1948 阅读 · 3 评论 -
Java/861.(反转矩阵后的得分) Score After Flipping Matrix
先上题目给出了两种风格的代码,一是直接在类里面完成计算。二是定义功能函数,通过调用函数完成计算。思路在最后面。代码部分一:class Solution { public int matrixScore(int[][] A) { int i,j,zeroCount,oneCount,index,count,result=0; for(i=0;i<A.le...原创 2018-07-05 19:58:40 · 815 阅读 · 0 评论