1 Star 0 Fork 0

geekplayers/Leetcode-301-600

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
Interval.java
ListNode.java
Node.java
README.md
TreeNode.java
_301_RemoveInvalidParentheses.java
_302_SmallestRectangleEnclosingBlackPixels.java
_303_RangeSumQueryImmutable.java
_304_RangeSumQuery2DImmutable.java
_305_NumberofIslandsII.java
_306_AdditiveNumber.java
_307_RangeSumQueryMutable.java
_308_RangeSumQuery2DMutable.java
_309_BestTimetoBuyandSellStockwithCooldown.java
_310_MinimumHeightTrees.java
_311_SparseMatrixMultiplication.java
_312_BurstBalloons.java
_313_SuperUglyNumber.java
_314_BinaryTreeVerticalOrderTraversal.java
_315_CountofSmallerNumbersAfterSelf.java
_316_RemoveDuplicateLetters.java
_317_ShortestDistancefromAllBuildings.java
_318_MaximumProductofWordLengths.java
_319_BulbSwitcher.java
_320_GeneralizedAbbreviation.java
_321_CreateMaximumNumber.java
_322_CoinChange.java
_323_NumberofConnectedComponentsinanUndirectedGraph.java
_324_WiggleSortII.java
_325_MaximumSizeSubarraySumEqualsk.java
_326_PowerofThree.java
_327_CountofRangeSum.java
_328_OddEvenLinkedList.java
_329_LongestIncreasingPathinaMatrix.java
_330_PatchingArray.java
_331_VerifyPreorderSerializationofaBinaryTree.java
_332_ReconstructItinerary.java
_333_LargestBSTSubtree.java
_334_IncreasingTripletSubsequence.java
_335_SelfCrossing.java
_336_PalindromePairs.java
_337_HouseRobberIII.java
_338_CountingBits.java
_339_NestedListWeightSum.java
_340_LongestSubstringwithAtMostKDistinctCharacters.java
_341_FlattenNestedListIterator.java
_342_PowerofFour.java
_343_IntegerBreak.java
_344_ReverseString.java
_345_ReverseVowelsofaString.java
_346_MovingAveragefromDataStream.java
_347_TopKFrequentElements.java
_348_DesignTicTacToe.java
_349_IntersectionofTwoArrays.java
_350_IntersectionofTwoArraysII.java
_351_AndroidUnlockPatterns.java
_352_DataStreamasDisjointIntervals.java
_353_DesignSnakeGame.java
_354_RussianDollEnvelopes.java
_355_DesignTwitter.java
_356_LineReflection.java
_357_CountNumberswithUniqueDigits.java
_358_RearrangeStringkDistanceApart.java
_359_LoggerRateLimiter.java
_360_SortTransformedArray.java
_361_BombEnemy.java
_362_DesignHitCounter.java
_363_MaxSumofRectangleNoLargerThanK.java
_364_NestedListWeightSumII.java
_365_WaterandJugProblem.java
_366_FindLeavesofBinaryTree.java
_367_ValidPerfectSquare.java
_368_LargestDivisibleSubset.java
_369_PlusOneLinkedList.java
_370_RangeAddition.java
_371_SumofTwoIntegers.java
_372_SuperPow.java
_373_FindKPairswithSmallestSums.java
_374_GuessNumberHigherorLower.java
_375_GuessNumberHigherorLowerII.java
_376_WiggleSubsequence.java
_377_CombinationSumIV.java
_378_KthSmallestElementinaSortedMatrix.java
_379_DesignPhoneDirectory.java
_380_InsertDeleteGetRandom.java
_381_InsertDeleteGetRandomDuplicatesallowed.java
_382_LinkedListRandomNode.java
_383_RansomNote.java
_384_ShuffleanArray.java
_385_MiniParser.java
_386_LexicographicalNumbers.java
_387_FirstUniqueCharacterinaString.java
_388_LongestAbsoluteFilePath.java
_389_FindtheDifference.java
_390_EliminationGame.java
_391_PerfectRectangle.java
_392_IsSubsequence.java
_393_UTF8Validation.java
_394_DecodeString.java
_395_LongestSubstringwithAtLeastKRepeatingCharacters.java
_396_RotateFunction.java
_397_IntegerReplacement.java
_398_RandomPickIndex.java
_399_EvaluateDivision.java
_400_NthDigit.java
_401_BinaryWatch.java
_402_RemoveKDigits.java
_403_FrogJump.java
_404_SumofLeftLeaves.java
_405_ConvertaNumbertoHexadecimal.java
_406_QueueReconstructionbyHeight.java
_407_TrappingRainWaterII.java
_408_ValidWordAbbreviation.java
_409_LongestPalindrome.java
_410_SplitArrayLargestSum.java
_411_MinimumUniqueWordAbbreviation.java
_412_FizzBuzz.java
_413_ArithmeticSlices.java
_414_ThirdMaximumNumber.java
_415_AddStrings.java
_416_PartitionEqualSubsetSum.java
_417_PacificAtlanticWaterFlow.java
_418_SentenceScreenFitting.java
_419_BattleshipsinaBoard.java
_420_StrongPasswordChecker.java
_421_MaximumXORofTwoNumbersinanArray.java
_422_ValidWordSquare.java
_423_ReconstructOriginalDigitsfromEnglish.java
_424_LongestRepeatingCharacterReplacement.java
_425_WordSquares.java
_425_WordSquares2.java
_426_ConvertBinarySearchTreetoSortedDoublyLinkedList.java
_427_ConstructQuadTree.java
_428_SerializeandDeserializeNaryTree.java
_429_NaryTreeLevelOrderTraversal.java
_430_FlattenaMultilevelDoublyLinkedList.java
_431_EncodeNaryTreetoBinaryTree.java
_432_AllOoneDataStructure.java
_433_MinimumGeneticMutation.java
_434_NumberofSegmentsinaString.java
_435_NonoverlappingIntervals.java
_436_FindRightInterval.java
_437_PathSumIII.java
_438_FindAllAnagramsinaString.java
_439_TernaryExpressionParser.java
_440_KthSmallestinLexicographicalOrder.java
_441_ArrangingCoins.java
_442_FindAllDuplicatesinanArray.java
_443_StringCompression.java
_444_SequenceReconstruction.java
_444_SequenceReconstruction2.java
_445_AddTwoNumbersII.java
_446_ArithmeticSlicesIISubsequence.java
_447_NumberofBoomerangs.java
_448_FindAllNumbersDisappearedinanArray.java
_449_SerializeandDeserializeBST.java
_450_DeleteNodeinaBST.java
_451_SortCharactersByFrequency.java
_452_MinimumNumberofArrowstoBurstBalloons.java
_453_MinimumMovestoEqualArrayElements.java
_454_FourSumII.java
_455_AssignCookies.java
_456_132Pattern.java
_457_CircularArrayLoop.java
_458_PoorPigs.java
_459_RepeatedSubstringPattern.java
_460_LFUCache.java
_461_HammingDistance.java
_462_MinimumMovestoEqualArrayElementsII.java
_463_IslandPerimeter.java
_464_CanIWin.java
_465_OptimalAccountBalancing.java
_466_CountTheRepetitions.java
_467_UniqueSubstringsinWraparoundString.java
_468_ValidateIPAddress.java
_469_ConvexPolygon.java
_470_ImplementRand10UsingRand7.java
_471_EncodeStringwithShortestLength.java
_472_ConcatenatedWords.java
_472_ConcatenatedWords2.java
_473_MatchstickstoSquare.java
_474_OnesandZeroes.java
_475_Heaters.java
_476_NumberComplement.java
_477_TotalHammingDistance.java
_478_GenerateRandomPointinaCircle.java
_479_LargestPalindromeProduct.java
_480_SlidingWindowMedian.java
_480_SlidingWindowMedian2.java
_481_MagicalString.java
_482_LicenseKeyFormatting.java
_483_SmallestGoodBase.java
_484_FindPermutation.java
_485_MaxConsecutiveOnes.java
_486_PredicttheWinner.java
_487_MaxConsecutiveOnesII.java
_488_ZumaGame.java
_489_RobotRoomCleaner.java
_490_TheMaze.java
_491_IncreasingSubsequences.java
_492_ConstructTheRectangle.java
_493_ReversePairs.java
_494_TargetSum.java
_495_TeemoAttacking.java
_496_NextGreaterElementI.java
_497_RandomPointinNonoverlappingRectangles.java
_498_DiagonalTraverse.java
_499_TheMazeIII.java
_499_TheMazeIII2.java
_500_KeyboardRow.java
_501_FindModeinBinarySearchTree.java
_502_IPO.java
_503_NextGreaterElementII.java
_504_Base7.java
_505_TheMazeII.java
_506_RelativeRanks.java
_507_PerfectNumber.java
_508_MostFrequentSubtreeSum.java
_509_FibonacciNumber.java
_513_FindBottomLeftTreeValue.java
_514_FreedomTrail.java
_515_FindLargestValueinEachTreeRow.java
_516_LongestPalindromicSubsequence.java
_517_SuperWashingMachines.java
_518_CoinChange2.java
_519_RandomFlipMatrix.java
_520_DetectCapital.java
_521_LongestUncommonSubsequenceI.java
_522_LongestUncommonSubsequenceII.java
_523_ContinuousSubarraySum.java
_524_LongestWordinDictionarythroughDeleting.java
_525_ContiguousArray.java
_526_BeautifulArrangement.java
_527_WordAbbreviation.java
_527_WordAbbreviation2.java
_528_RandomPickwithWeight.java
_529_Minesweeper.java
_530_MinimumAbsoluteDifferenceinBST.java
_531_LonelyPixelI.java
_532_KdiffPairsinanArray.java
_533_LonelyPixelII.java
_535_EncodeAndDecodeTinyURL.java
_536_ConstructBinaryTreefromString.java
_537_ComplexNumberMultiplication.java
_538_ConvertBSTtoGreaterTree.java
_539_MinimumTimeDifference.java
_540_SingleElementinaSortedArray.java
_541_ReverseStringII.java
_542_01Matrix.java
_543_DiameterofBinaryTree.java
_544_OutputContestMatches.java
_545_BoundaryofBinaryTree.java
_546_RemoveBoxes.java
_547_FriendCircles.java
_548_SplitArraywithEqualSum.java
_549_BinaryTreeLongestConsecutiveSequenceII.java
_551_StudentAttendanceRecordI.java
_552_StudentAttendanceRecordII.java
_553_OptimalDivision.java
_554_BrickWall.java
_555_SplitConcatenatedStrings.java
_556_NextGreaterElementIII.java
_557_ReverseWordsinaStringIII.java
_558_QuadTreeIntersection.java
_559_MaximumDepthofNaryTree.java
_560_SubarraySumEqualsK.java
_561_ArrayPartitionI.java
_562_LongestLineofConsecutiveOneinMatrix.java
_562_LongestLineofConsecutiveOneinMatrix2.java
_563_BinaryTreeTilt.java
_564_FindtheClosestPalindrome.java
_565_ArrayNesting.java
_566_ReshapetheMatrix.java
_567_PermutationinString.java
_568_MaximumVacationDays.java
_572_SubtreeofAnotherTree.java
_573_SquirrelSimulation.java
_575_DistributeCandies.java
_576_OutofBoundaryPaths.java
_581_ShortestUnsortedContinuousSubarray.java
_582_KillProcess.java
_583_DeleteOperationforTwoStrings.java
_587_ErecttheFence.java
_588_DesignInMemoryFileSystem.java
_589_NaryTreePreorderTraversal.java
_590_NaryTreePostorderTraversal.java
_591_TagValidator.java
_592_FractionAdditionandSubtraction.java
_593_ValidSquare.java
_594_LongestHarmoniousSubsequence.java
_598_RangeAdditionII.java
_599_MinimumIndexSumofTwoLists.java
_600_NonnegativeIntegerswithoutConsecutiveOnes.java
克隆/下载
_414_ThirdMaximumNumber.java 2.62 KB
一键复制 编辑 原始数据 按行查看 历史
Cspiration 提交于 6年前 . Add files via upload
package leetcode_301To600;
import java.util.HashMap;
import java.util.HashSet;
import java.util.PriorityQueue;
/**
* 本代码来自 Cspiration,由 @Cspiration 提供
* 题目来源:http://leetcode.com
* - Cspiration 致力于在 CS 领域内帮助中国人找到工作,让更多海外国人受益
* - 现有课程:Leetcode Java 版本视频讲解(1-900题)(上)(中)(下)三部
* - 算法基础知识(上)(下)两部;题型技巧讲解(上)(下)两部
* - 节省刷题时间,效率提高2-3倍,初学者轻松一天10题,入门者轻松一天20题
* - 讲师:Edward Shi
* - 官方网站:https://cspiration.com
* - 版权所有,转发请注明出处
*/
public class _414_ThirdMaximumNumber {
/**
* Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).
Example 1:
Input: [3, 2, 1]
Output: 1
Explanation: The third maximum is 1.
Example 2:
Input: [1, 2]
Output: 2
Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1]
Output: 1
Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.
time : O(n)
space : O(1)
* @param nums
* @return
*/
public int thirdMax(int[] nums) {
Integer max1 = null;
Integer max2 = null;
Integer max3 = null;
for (Integer num : nums) {
if (num.equals(max1) || num.equals(max2) || num.equals(max3)) continue;
if (max1 == null || num > max1) {
max3 = max2;
max2 = max1;
max1 = num;
} else if (max2 == null || num > max2) {
max3 = max2;
max2 = num;
} else if (max3 == null || num > max3) {
max3 = num;
}
}
return max3 == null ? max1 : max3;
}
/**
* time : O(n)
* space : O(1)
*
* @param nums
* @return
*/
public int thirdMax2(int[] nums) {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
if (set.add(num)) {
priorityQueue.offer(num);
if (priorityQueue.size() > 3) priorityQueue.poll();
}
}
if (priorityQueue.size() == 2) priorityQueue.poll();
return priorityQueue.peek();
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/geekplayers/Leetcode-301-600.git
git@gitee.com:geekplayers/Leetcode-301-600.git
geekplayers
Leetcode-301-600
Leetcode-301-600
master

搜索帮助