给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode result = new ListNode(0);ListNode cur = result;ListNode start1 = l1;ListNode start2 = l2;int add = 0;while(start1 != null || start2 != null) {int x = start1 == null ? 0 : start1.val;int y = start2 == null ? 0 : start2.val;int sum = x + y + add;add = sum / 10;int val = sum % 10;cur.next = new ListNode(val);cur = cur.next;if(start1 != null) {start1 = start1.next;}if(start2 != null) {start2 = start2.next;}}if (add > 0) {cur.next = new ListNode(add);}return result.next;}

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

示例 1:

输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4

示例 2:

输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1

public int search(int[] nums, int target) {if(nums == null || nums.length == 0) {return -1;}int x = 0;int y = nums.length - 1;if(y == 0) {return nums[0] == target ? 0 : -1;}while(x <= y) {int mid = (x + y) / 2;if(nums[mid] == target) {return mid;}if (nums[0] <= nums[mid]) {if (nums[0] <= target && target < nums[mid]) {y = mid - 1;} else {x = mid + 1;}} else {if (nums[mid] < target && target <= nums[nums.length - 1]) {x = mid + 1;} else {y = mid - 1;}}}return -1;}

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

示例 1:

输入:nums = [4,1,4,6]
输出:[1,6] 或 [6,1]

示例 2:

输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]

    public int[] singleNumbers(int[] nums) {int result = 0;for(int i = 0; i < nums.length; i++) {result ^= nums[i];}int index = 0;while(result > 0) {if((result & 1) == 1) {break;}index++;result = result >> 1;}int[] resultArray = new int[2];for(int i : nums) {if(((i >> index) & 1) == 0 ) {resultArray[0] ^= i;} else {resultArray[1] ^= i;}}return resultArray;}

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

public int lengthOfLongestSubstring(String s) {int result = 0;HashMap<Character, Integer> map = new HashMap<>();int left = 0;for(int i = 0; i < s.length(); i++) {if(map.containsKey(s.charAt(i))) {left = Math.max(map.get(s.charAt(i)) + 1, left);}map.put(s.charAt(i), i);result = Math.max(result, i - left + 1);}return result;}

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。
    节点的右子树只包含大于当前节点的数。
    所有左子树和右子树自身必须也是二叉搜索树。

public boolean isValidBST(TreeNode root) {return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);}boolean validate(TreeNode node, long min, long max) {if(node == null) {return true;}if(node.val <= min || node.val >= max) {return false;}return validate(node.left, min, node.val) && validate(node.right, node.val, max);}

算法题存档20200505相关推荐

  1. 算法题存档20191223

    题目描述 删除给出链表中的重复元素,使链表中的所有元素都只出现一次 例如: 给出的链表为1->1->2,返回1->2. 给出的链表为1->1->2->3->3 ...

  2. 算法题存档20190207

    题目描述 如果一个整数只能被1和自己整除,就称这个数是素数. 如果一个数正着反着都是一样,就称为这个数是回文数.例如:6, 66, 606, 6666 如果一个数字既是素数也是回文数,就称这个数是回文 ...

  3. 算法题存档20190127

    题目描述 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径.迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路.迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与 ...

  4. 算法题存档20200627(树)

    给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 Tru ...

  5. 算法题存档2020425

    给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [   [1,2,3],   [1,3,2],   [2,1,3],   [2,3,1],   [3, ...

  6. 20191219算法题存档

    题目描述 给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组 注意: 可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n public class ...

  7. 20190730算法题存档

    题目描述 Given a singly linked list L: L 0→L 1→-→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→ ...

  8. 20190724算法题存档

    题目描述 Sort a linked list in O(n log n) time using constant space complexity. public class Solution {p ...

  9. 20190719算法题存档

    题目描述 小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011.... 并且小Q对于能否被3整除这个性质很感兴趣. 小Q现在希望你能帮他计算一下从数 ...

最新文章

  1. 使用srvany.exe将任何程序作为Windows服务运行
  2. 牛客 - Dress as women(sg定理+位运算)
  3. PyTorch深度学习实践
  4. .net MVC路由
  5. oracle 设置输出显示中文乱码,修改oracle当前会话的语言环境,解决oracle显示中文乱码的问题 | 信春哥,系统稳,闭眼上线不回滚!...
  6. php写时间 自动,ThinkPHP6.0 自动写入时间戳
  7. System V消息队列
  8. CenOS6 nginx+pxe+tftpd+samba/nfs+dhcpd 无盘安装windows  linux
  9. nginx 去除index php,nginx怎么去除index.php
  10. 告别平淡(平庸)从做难事儿开始
  11. Java、JSP研究生导师信息管理系统设计
  12. 【C基础练习题】第一章:输入和输出 | 基础练习题 | 提供题解
  13. POJ 1700 经典过河问题(贪心)
  14. 为什么国外互联网这几年追不上国内互联网了?
  15. 混合特征目标选择用于基于BCI的二维光标控制
  16. js时间戳转换日期,日期转换时间戳
  17. php ci captcha使用,CodeIgniter框架验证码类库文件与用法示例
  18. pid matlab 温度控制,温控PID算法的具体实现(一)
  19. 红外发射二极管能做接收管
  20. 统帅LE32KNH6系统升级方法

热门文章

  1. 使用BFC块级上下文
  2. idea 创建 spring 配置文件
  3. Class绑定、Class对象绑定、v-if(条件渲染)、v-show(元素显示)、v-for(列表渲染)
  4. js 添加属性_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__
  5. matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
  6. github使用总结
  7. argmax函数_Python科学计算库numpy——统计函数
  8. 教你直白的理解贝塞尔曲线???
  9. UWP平台Taglib编译(1)
  10. 第 9 章 代码审查制度