劍指offer:8-11記錄

用兩個棧實現一個隊列。隊列的聲明如下,請實現它的兩個函數 appendTail 和 deleteHead ,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素,deleteHead?操作返回 -1 )

?

示例 1:

輸入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
輸出:[null,null,3,-1]
示例 2:

輸入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[5],[2],[],[]]
輸出:[null,-1,null,null,5,2]
提示:

1 <= values <= 10000
最多會對?appendTail、deleteHead 進行?10000?次調用

?思路:輔助棧,彈出操作之前,當棧2為空時將棧1的元素全部倒入棧2,然后彈出棧2頂。

class CQueue {Stack<Integer> stack1;Stack<Integer> stack2;public CQueue() {stack1 = new Stack<Integer>();stack2 = new Stack<Integer>();}public void appendTail(int value) {stack1.push(value);}public int deleteHead() {if(stack2.empty()){while (!stack1.isEmpty()) {stack2.push(stack1.pop());}}if(stack2.empty()){return -1;}return stack2.pop();}
}/*** Your CQueue object will be instantiated and called as such:* CQueue obj = new CQueue();* obj.appendTail(value);* int param_2 = obj.deleteHead();*/

寫一個函數,輸入 n ,求斐波那契(Fibonacci)數列的第 n 項。斐波那契數列的定義如下:

F(0) = 0,???F(1)?= 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契數列由 0 和 1 開始,之后的斐波那契數就是由之前的兩數相加而得出。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

?

示例 1:

輸入:n = 2
輸出:1
示例 2:

輸入:n = 5
輸出:5
?

提示:

0 <= n <= 100

思路:按照式子優化空間,用幾個變量即可。

class Solution {public int fib(int n) {int a = 0, b = 1, sum;for(int i = 0; i < n; i++){sum = (a + b) % 1000000007;a = b;b = sum;}return a;}
}

一只青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n?級的臺階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

示例 1:

輸入:n = 2
輸出:2
示例 2:

輸入:n = 7
輸出:21
提示:

0 <= n <= 100

式子和上題一樣。

class Solution {public int numWays(int n) {int a = 1, b = 1, sum;for(int i = 0; i < n; i++){sum = (a + b) % 1000000007;a = b;b = sum;}return a;}
}

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組?[3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉,該數組的最小值為1。??

示例 1:

輸入:[3,4,5,1,2]
輸出:1
示例 2:

輸入:[2,2,2,0,1]
輸出:0

思路:二分,注意和右端點比,不要左端點。

靈魂是如何操作相等情況。

class Solution {public int minArray(int[] numbers) {int i = 0, j = numbers.length - 1;while (i < j) {int mid = (i + j) / 2;if (numbers[mid] > numbers[j]) i = mid + 1;else if (numbers[mid] < numbers[j]) j = mid;//這一句是細節靈魂所在else j--;}return numbers[i];}
}


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444139.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql命令

Mysql常見的命令總結&#xff1a; mysql服務的退出以及登陸 方式一&#xff1a;通過mysql自帶的客戶端&#xff0c;只限于root用戶 方式二&#xff1a;通過Windows自帶的客戶端&#xff0c; 登陸&#xff1a;mysql -uroot -p&#xff1b; 退出&#xff1a;exit或者是ctrlc&am…

leetcode343. 整數拆分

給定一個正整數 n&#xff0c;將其拆分為至少兩個正整數的和&#xff0c;并使這些整數的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2 輸出: 1 解釋: 2 1 1, 1 1 1。 示例 2: 輸入: 10 輸出: 36 解釋: 10 3 3 4, 3 3 4 36。 思路&#xff1a;動態規…

尚硅谷李老師Mysql基礎筆記

數據庫的相關概念 一&#xff1a;數據庫的好處 1.可以持久化數據到本地 2.結構化查詢 二&#xff1a;數據庫的常見概念 1.DB&#xff1a;數據庫&#xff0c;存儲數據的容器 2.DBMS:數據庫管理系統&#xff0c;又稱為數據庫軟件或數據庫產品&#xff0c;用于創建或者管理數據&…

劍指offer:12-17記錄

請設計一個函數&#xff0c;用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一格開始&#xff0c;每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格&#xff0c;那么該路徑不能再次進入該格子。例如&#xf…

劍指offer:18-21記錄

給定單向鏈表的頭指針和一個要刪除的節點的值&#xff0c;定義一個函數刪除該節點。 返回刪除后的鏈表的頭節點。 注意&#xff1a;此題對比原題有改動 示例 1: 輸入: head [4,5,1,9], val 5 輸出: [4,1,9] 解釋: 給定你鏈表中值為 5 的第二個節點&#xff0c;那么在調用…

尚硅谷李老師筆記2

一&#xff1a;MySQL的背景 前身是瑞典的一家公司&#xff0c;MySQLAB 08年被sun公司收購 09年sun公司被oracle公司收購 二&#xff1a;MySQL的優點 1.開源&#xff0c;免費&#xff0c;成本低 2.性能高&#xff0c;移植性好 3.體積小&#xff0c;便于安裝 三&#xff1a;MyS…

劍指offer:22-25記錄

輸入一個鏈表&#xff0c;輸出該鏈表中倒數第k個節點。為了符合大多數人的習慣&#xff0c;本題從1開始計數&#xff0c;即鏈表的尾節點是倒數第1個節點。例如&#xff0c;一個鏈表有6個節點&#xff0c;從頭節點開始&#xff0c;它們的值依次是1、2、3、4、5、6。這個鏈表的倒…

尚硅谷李老師筆記3DQL

一&#xff1a;語法 select 查詢列表 from 表名 二&#xff1a;特點 1.查詢列表可以是字段&#xff0c;常量&#xff0c;表達式&#xff0c;函數&#xff0c;也可以是多個的組合結果 2.查詢結果是一張虛擬表 三&#xff1a;示例 1.查詢單個字段 select 字段名 from 表名 2.查…

java 防止表單重復提交

防止表單重復提交&#xff0c;或者是防止按F5 刷新提交表單。 在WEB開發中是經常會碰到這樣的問題的。 目前主流的解決方法有以下三種&#xff1a; 1、采用腳本來解決 2、重定向到別的頁面 3、使用s:token 標簽 由于我是使用S2SH來開發的&#xff0c;所以就選擇了第三種方法。 …

貪吃蛇源代碼111

#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <time.h> const int H 8; //地圖的高 const int L 16; //地圖的長 char GameMap[H][L]; //游戲地圖 int key; //按鍵保存 int sum 1, over 0; //蛇…

劍指offer:26-30記錄

輸入兩棵二叉樹A和B&#xff0c;判斷B是不是A的子結構。(約定空樹不是任意一個樹的子結構) B是A的子結構&#xff0c; 即 A中有出現和B相同的結構和節點值。 例如: 給定的樹 A: 3 / \ 4 5 / \ 1 2 給定的樹 B&#xff1a; 4 / 1 返回 true&#xff0c;因為…

Calendar類 set方法 get方法 add方法

Calendar類 set方法 get方法 add方法 package asd; import java.util.*; public class zixue { public static void main(String[] args) { demo01();//實驗的是get()方法&#xff1b; demo02();//實驗的是set()方法&#xff1b; } //---------------------------------------…

劍指offer:31-32記錄(4道)

輸入兩個整數序列&#xff0c;第一個序列表示棧的壓入順序&#xff0c;請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某棧的壓棧序列&#xff0c;序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列&#xff0c;但…

炸窩Vector簡介

/** 1.Vector的介紹&#xff1a;* Vector<E>是所有單列集合的鼻祖&#xff0c;但是在JAVA1.2版本之后就被Collection集合所替代&#xff0c;Vector可以實現可增長的對象數組* 與數組一樣&#xff0c;它包含可以使用整數索引進行訪問的組件* 但是它的大小可以根據需要增加…

劍指offer:33-37記錄

輸入一個整數數組&#xff0c;判斷該數組是不是某二叉搜索樹的后序遍歷結果。如果是則返回 true&#xff0c;否則返回 false。假設輸入的數組的任意兩個數字都互不相同。 參考以下這顆二叉搜索樹&#xff1a; 5 / \ 2 6 / \ 1 3 示例 1&#xff1a; 輸入: [1,6,…

劍指offer:39-42記錄

數組中有一個數字出現的次數超過數組長度的一半&#xff0c;請找出這個數字。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 示例 1: 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2 限制&#xff1a; 1 < 數組長度 < 50000 思路&#xff1a;…

炸窩哈希值的原理

package asdfg; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class aaa { public static void main(String[] args) {/*** 小提示&#xff1a;* 1.對于所有沒有索引的方法&#xff0c;我們都不能使用for循環進行遍歷* 2.提到接口&am…

劍指offer:45-48記錄

輸入一個正整數數組&#xff0c;把數組里所有數字拼接起來排成一個數&#xff0c;打印能拼接出的所有數字中最小的一個。 示例 1: 輸入: [10,2] 輸出: "102" 示例 2: 輸入: [3,30,34,5,9] 輸出: "3033459" 提示: 0 < nums.length < 100 說明:…

炸窩(可變函數)

可變函數源碼理解&#xff1a;學生角度&#xff0c;更易操作 public static void main(String[] args) {/*int cadd(10,29);System.out.println(c);*///此時可以隨意的進行數據的傳遞add(20,30,40);//[I1db9742:解釋&#xff0c;中括號代表是一個數組&#xff0c;為一個地址值…

劍指offer:50-53記錄

在字符串 s 中找出第一個只出現一次的字符。如果沒有&#xff0c;返回一個單空格。 示例: s "abaccdeff" 返回 "b" s "" 返回 " " 限制&#xff1a; 0 < s 的長度 < 50000 思路&#xff1a;map記錄次數&#xff0c;再…