原创 下一個排列(Leetcode)

實現獲取下一個排列的函數,算法需要將給定數字序列重新排列成字典序中下一個更大的排列。 如果不存在下一個更大的排列,則將數字重新排列成最小的排列(即升序排列)。 必須原地修改,只允許使用額外常數空間。 以下是一些例子,輸入位於左側列

原创 數組中出現次數超過一半的數字( O(n) 時間複雜度)

數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。 你可以假設數組是非空的,並且給定的數組總是存在多數元素。 示例 1: 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2 第一個方法排序後取中

原创 包含min函數的棧(借用輔助棧)

定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間複雜度都是 O(1)。 借用一個輔助棧,用來存放當前最小值 記存放所有元素的棧爲s, 存放最小值的棧爲m

原创 JAVA 項目目錄

JDK目錄: jdk bin 編譯器和工具 demo 演示 docs HT

原创 數組中數字出現的次數(位運算的運用)

背景知識: 若x是任意整數, 則有: x^x=0; x^0=x; 三道題: 一個數組,其中只有一個數只出現一次,其他數字均出現兩次,求只出現一次的數 答:將所有數異或一遍,最終結果即所求 一個數組,其中有兩個數只出現一

原创 滑動窗口的最大值&隊列的最大值——單調棧/單調隊列的應用

I. 滑動窗口的最大值 給定一個數組 nums 和滑動窗口的大小 k,請找出所有滑動窗口裏的最大值。 示例: 輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 輸出: [3,3,5,5,6,7] 維護

原创 進制轉換

import java.util.*; import java.lang.*; public class ConversionOfNumberSystems { public class Number{ String s;

原创 兩兩交換鏈表中的節點

給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。 /** * Definition for singly-linked list. * struct

原创 不用加減乘除做加法

寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。 先來計算下面數之和: 6 + 5 = 11 二進制表示:110 + 101 = 1011 列豎式: 總結: a、b相加步驟: 1. x=a^b, y

原创 面向對象基礎概述

一:面嚮對象語言基本特性: 萬物皆對象; 程序是對象的集合,它們彼此通過發送消息調用對方; 每個對象都擁有由其他對象所構成的存儲; 每個對象都擁有其類型(Type),每個對象都是某個類(Class)的實例(Instance); 某

原创 二維數組中的查找(劍指offer)

在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 記數組爲a[n][m],要查詢的數記

原创 JDK安裝&JAVA環境配置

一: 下載安裝JDK 下載網址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下載之後是這個樣子: 雙擊安

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 解法一: /* bool flag = x && y; 對於上式,若x==0,不會判斷y

原创 JAVA基礎雜談

類的規範命名: 以大寫字母開頭的駱駝命名法;(這只是行業內不成言的規範) 註釋: //註釋一行 /多行註釋/ /** 文檔註釋, 可用來註釋類、接口、靜態方法、成員方法、靜態變量、成員變量、常量*/ 數據類型 整型: 用於表示沒有

原创 楊輝三角

楊輝三角(也稱帕斯卡三角)是一個無限對稱的數字金字塔,從頂部的單個1開始,下面一行中的每個數字都是上面兩個數字的和。 楊輝三角,是二項式係數在三角形中的一種幾何排列,在中國南宋數學家楊輝1261年所著的《詳解九章算法》一書中出現。