算法---剑指offer
程序员文章站
2022-07-12 09:31:06
...
public static boolean duplicate(int[] nums){
// 3. 数组中重复的数字
if (nums==null || nums.length<=0){
return false;
}
for (int i=0;i<=nums.length-1;i++){
while (nums[i]!=i){
// 重要:一直让其变为nums[i] = i为止
if(nums[i]==nums[nums[i]]){
return true;
}
else {
int temp = nums[i];
nums[i] = nums[nums[i]];
nums[nums[i]] = temp;
}
}
}
return false;
}
public static boolean Find(int target,int[][] matrix){
// 4. 二维数组中的查找
if (matrix.length ==0 || matrix == null || matrix[0].length==0){
return false;
}
int row_length = matrix[0].length-1;
int col_length = matrix.length-1;
int row = 0;
int col = col_length;
while(row<=row_length && col>=0){
if (matrix[row][col]>target){
col -= 1;
}
else if (matrix[row][col]<target){
row += 1;
}
else {
return true;
}
}
return false;
}
public static String replaceSpace(String s){
// 5. 替换空格
// 5.1:先看需要增加多少个空位置
int a = s.length()-1;
StringBuilder new_s = new StringBuilder(s);
for(int i = 0; i<=a; i++){
if(new_s.charAt(i)==' '){
new_s.append(" ");
}
}
// 5.2:循环进行替换
int y = new_s.length()-1;
for(int i = a; i>=0; i--){
if(new_s.charAt(i)==' '){
new_s.setCharAt(y,'0');
new_s.setCharAt(y-1,'2');
new_s.setCharAt(y-2,'%');
y-=3;
}
else {
new_s.setCharAt(y,new_s.charAt(i));
y-=1;
}
}
return String.valueOf(new_s);
}
需要测试:
public static void print_lianbiao(Node node){
// 6. 从尾到头打印链表(递归模式)
if(node==null){
System.out.println("error");
}
if(node!=null){
node = node.next;
System.out.println(node.val);
}
}
public static void print_liaobiao_1(Node node){
// 6. 从尾到头打印链表(栈)
if (node==null){
System.out.println("error");
}
Stack<Integer> stack = new Stack<>();
while(node!=null){
stack.add(node.val);
node = node.next;
}
while (!stack.isEmpty()){
System.out.println(stack.pop());
}
}
推荐阅读
-
《剑指offer》面试题6 重建二叉树
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
AMD新卡RX 5500现身跑分:剑指GTX 1660?
-
剑指offer第二天