随笔分类 -  算法

小米二轮面试编程题:二叉树的前序遍历,要求非递归方式
摘要:思路如下,使用栈,每次把当前节点入栈,然后右子节点入栈,左子节点入栈。 代码如下: import java.util.*; public class Solution { ArrayList<Integer> list = new ArrayList<Integer>(); public Array 阅读全文
posted @ 2021-05-15 13:28 坚守梦想 阅读(113) 评论(0) 推荐(0) 编辑
小米面试前算法准备:leetcode88,合并两个有序数组
摘要:关键思路从后往前合并 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int idxm=m-1; int idxn=n-1; int sum=m+n-1; while(idxm>=0&&idxn 阅读全文
posted @ 2021-05-14 00:28 坚守梦想 阅读(78) 评论(0) 推荐(0) 编辑
为了去小米面试准备的算法题:求递增数组中相加等于10的元素对
摘要:使用双指针,由于是单调递增的,所以数对是不可能重复的。 import java.util.ArrayList; import java.util.List; public class TwoNumSum { public static void main(String[] args) { int n 阅读全文
posted @ 2021-05-13 16:55 坚守梦想 阅读(130) 评论(0) 推荐(0) 编辑
小米面试算法题:求一个先升序后降序得数组的最大值
摘要:求一个先升序后降序得数组的最大值 使用遍历的方式,时间复杂度最大O(N),只需要把当前节点和前一个节点、后一个节点进行比较。如果比前一个节点大,也比后一个节点大,那么就是要找的数据。如果数组小于3或者找不到这样的数,返回-1. //使用遍历O(n)的时间复杂度 int findPeak(int nu 阅读全文
posted @ 2021-05-13 16:33 坚守梦想 阅读(902) 评论(0) 推荐(0) 编辑
leetcode面试题 17.14. 最小K个数(快速排序,只排序一边)
摘要:package com.andy.springtransaction.aglorithm; import java.util.ArrayList; import java.util.Arrays; import java.util.List; //面试题 17.14. 最小K个数 class Sol 阅读全文
posted @ 2021-04-24 18:11 坚守梦想 阅读(40) 评论(0) 推荐(0) 编辑
力扣leetcode206题,反转链表递归方式Java代码细节分析。
摘要:细节分析往往是算法代码编写的关键,反转链表的关键是如下两行代码: head.next.next=head; //head=null; //这步一定要注意,不然末尾少了一个指向null的连接。 head.next=null;//如果没有这一步,新链表的最后一个节点会出现环 /** * Definiti 阅读全文
posted @ 2021-04-14 12:42 坚守梦想 阅读(80) 评论(0) 推荐(0) 编辑
力扣leetcode160题,相交链表使用双指针Java代码细节分析。
摘要:有时候算法题不知道怎么写代码,往往是因为没有考虑细节,或者细节考虑不全面。 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) 阅读全文
posted @ 2021-04-14 12:03 坚守梦想 阅读(46) 评论(0) 推荐(0) 编辑