1.劍指 offer 53 - ii. 0~n-1中缺失的數字
乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。
有順序陣列,應該找到關係使用二分查詢
class solution
else;
}return i;
}}
2. 雙指標方法求鍊錶相交!!
劍指 offer 52. 兩個鍊錶的第乙個公共節點
/**
* definition for singly-linked list.
* public class listnode
* }*/public class solution else
if(tempb == null) else
}return tempa;
}}
3. 劍指 offer 57 - ii. 和為s的連續正數序列
輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
思路:使用滑動視窗
示例 1:
輸入:target = 9
輸出:[[2,3,4],[4,5]]
示例 2:
輸入:target = 15
輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
class solution else if (sum > target) else
res.add(arr);
// 左邊界向右移動
sum -= i;
i++;}}
return res.toarray(new int[res.size()]);
}}
4.螺旋列印陣列:
思路:上下左右的初始化,做乙個l型之後,需要做個if判斷在做下邊界的l。
因為最後應該都是上邊界的乛
class solution
//rows 代表行號 columns代表列
int rows = matrix.length, columns = matrix[0].length;
//return的
int order = new int[rows * columns];
//總的index
int index = 0;
//左右上下,但是問題是怎麼停下來
int left = 0, right = columns - 1, top = 0, bottom = rows - 1;
//停下來的條件,左右相遇 或者上下相遇
while (left <= right && top <= bottom)
//固定列不變,輸出行資訊
for (int row = top + 1; row <= bottom; row++)
//第二次做l型的時候需要看看是否符合要求 可能已經到了結束的點了
if (left < right && top < bottom)
for (int row = bottom; row > top; row--)
}left++;
right--;
top++;
bottom--;
}return order;
}}
劍指offer面試演算法題
1.長度為n的陣列裡面的元素都在0 n 1之間,找出第乙個重複的數字 思路 從頭到尾依次遍歷,如果當前的值a i i,如果a i a a i 那麼需要把a a i 位置上的值與a i 作交換 把對的值放在對的位置 之後繼續判斷此時的a i 位置沒有移動 如果a i a a i 證明對的位置上有對的元...
leetcode演算法題 劍指Offer篇(1)
1.1 題目描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。1.2 題解 1.2.1 利用map結構public intfindrepeatnumber i...
leetcode演算法題 劍指Offer篇(13)
1.1 題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。1.2 題解 1.2.1 摩爾投票法 驗證 x 是否為眾數 for int num nums if num i count return count nums.length 2?i 0 當無眾數時返回 0 2.1 題目描...