算法
programminghck
life is more than programming
展开
-
回文数
判断一个整数是否是回文数 public boolean isPalindrome(int x) { String xStr = String.valueOf(x); StringBuilder sb = new StringBuilder(xStr); if(xStr.equals(sb.reverse().toString())){ ...原创 2018-11-09 15:16:34 · 119 阅读 · 0 评论 -
两数之和
描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]public int[] twoSum(int[] nums, int targ...原创 2018-11-14 11:13:57 · 104 阅读 · 0 评论 -
给定一个字符串,逐个翻转字符串中的每个单词(来自leetCode)。
示例: 输入:"the sky is blue",输出: "blue is sky the".说明:无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 public String reverseWords(String s) { StringB...原创 2018-11-12 15:54:08 · 5657 阅读 · 0 评论 -
二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *...原创 2018-11-19 09:42:22 · 131 阅读 · 0 评论 -
给定一个整数数组,判断是否存在重复元素。
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,4,1]输出: true示例 2:输入: [1,2,3,6]输出: false示例 3:输入: [1,1,1,3,3,6,3,2,6,2]输出: truepublic boolean c...原创 2018-11-19 13:27:27 · 3547 阅读 · 0 评论 -
用Map及其子类分拣存储的思想处理数据
1、构造List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();用来存放数据此处略,其中用IMPCNYNAME表示国别名称,CDCDE表示税号 2、按税号排序用Collections.sort(list,new Comparator<Map<S...原创 2019-01-11 10:21:01 · 164 阅读 · 0 评论 -
求众数(来自leetcode)--可用map及其子类的分拣存储解决
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2class Solution { public int majorityElement(int[] num...原创 2019-01-19 16:52:38 · 170 阅读 · 0 评论 -
只出现一次的数字--较为高效的解法
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4 解答使用异或运算:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异...原创 2019-01-22 16:10:28 · 132 阅读 · 0 评论 -
反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution { public String ...原创 2019-02-13 14:50:35 · 130 阅读 · 0 评论 -
二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题思路:将2进制先转成10进制相加后在转成2进制字符串class Solution { publ原创 2019-02-13 16:56:05 · 239 阅读 · 0 评论 -
数组中连续n个数相加的最小值
输入数组int [] array = {1,2,0,7,8,4,3,2,5,6,7}; n代表n个数相加,数组中连续n个数相加的最小值public static int getNNumMin(int [] array, int n){ //计算连续的前n个数相加,并假设前n个数相加的和最小 int min = 0; for(int i=0;i<n;i++){ min ...原创 2019-04-08 16:07:30 · 2530 阅读 · 0 评论 -
两整数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均...原创 2018-11-14 10:58:32 · 654 阅读 · 0 评论 -
翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例: 输入"the sky is blue"输出: "blue is sky the"说明:无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。public static String reverseWords(...原创 2018-11-15 15:50:20 · 100 阅读 · 0 评论 -
二叉树中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]import java.util.*;class Solution { public List<Integer> inorderTraversal(TreeNode root) { Lis...原创 2018-11-09 15:10:46 · 126 阅读 · 0 评论 -
如何判断一个整数是2的n次幂
一、如何判断一个整数是2的n次幂?分析可以用枚举法判断一个数是2的你次幂,代码如下:package com.aim.getoff;import java.math.BigInteger;import java.util.Scanner;public class Judge2N {public static void main(String[] args) { Scanner scc ...原创 2018-11-04 13:15:07 · 880 阅读 · 0 评论 -
二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new Arra...原创 2018-11-13 11:11:58 · 100 阅读 · 0 评论 -
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4class Solution { public int singleNumber(int...原创 2018-11-13 11:14:56 · 117 阅读 · 0 评论 -
数组中第k大的元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k=2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k=4输出: 4说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。import java.ut...原创 2018-11-13 13:34:51 · 184 阅读 · 0 评论 -
判断一个数是2的n次幂效率较高的解法
判断一个数是2的n次幂效率较高的解法 public boolean isPowerOfTwo(int n) { if(n<=0){ return false; }else{ return (n&n-1)==0; } } ...原创 2018-11-13 15:26:58 · 353 阅读 · 0 评论 -
求出一个字符串中最大的回文字符串
求出一个字符串中最大的回文字符串(不是最优解) public String longestPalindrome(String s) { //存放所有的回文串 Set<String> palindromes = new HashSet<>(); s = s.trim(); if(s.equals(new StringBu...原创 2018-11-11 10:34:38 · 753 阅读 · 0 评论 -
用两个栈实现队列
package com.aim.getoff;import java.util.Stack;public class Twostack { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); ...原创 2018-11-11 10:45:26 · 83 阅读 · 0 评论 -
翻转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?class Solution { public ListNode reverseList(ListNode head) { ...原创 2018-11-13 16:11:43 · 119 阅读 · 0 评论 -
数组加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...原创 2018-11-15 15:45:16 · 1581 阅读 · 0 评论 -
求出先增后减数组序列中的最大值
输入 {1,2,3,4,5,6,7,8,9 2,4,5,6}输出 9要求时间复杂度小于O(n)class Solution { public int findPeakElement(int[] nums) { return findPeakElement(nums,0,nums.length); } public int fi...原创 2019-04-08 16:33:03 · 1620 阅读 · 0 评论