两数相除
题目地址两数相除难度 中思路总体思路相似,通过循环减除数的方式来找到最后的商。区别在于递减使用加减法还是位运算思路1常规的加法处理public int divide(int dividend, int divisor) { if(dividend == 0) return 0;
题目地址两数相除难度 中思路总体思路相似,通过循环减除数的方式来找到最后的商。区别在于递减使用加减法还是位运算思路1常规的加法处理public int divide(int dividend, int divisor) { if(dividend == 0) return 0;
题目删除有序数组中的重复项思路常规分步骤解决去除重复值移动数组,保持数据相对位置(通过另一个数组的辅助将原合规的数据移动) public int removeDuplicates(int[] nums) { // 去重 // 根据长度赋值,找到有效数字的长度,然后创建新数
K个一组翻转/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int va
题目地址思路:每次翻转一整列,然后经过N次翻转后,统计行数(一行中每个字母相同)。当存在规律相同的行的时候则相同列反转后都会变成字母相同例如(1010和0101,翻转后会变成1111,0000)。因此处理方法是找到矩阵中规律相同的行数;可以通过map key进行统计class Solution {
题目地址解题思路:排列组合+递归求解,递归每一位,当递归到最后一位的时候则添加字符串class Solution { Map<Character, String> map = new HashMap(); // 构建键盘按键 { map.put('2',&
题目链接本题是典型的双指针应用场景。题目的要求是求取容积最大值,容积公式 area = Math.min(a,b) * Math.abs(b-a)初始的left = 0, right = len -1. 容积计算后,每次移动较短的一边(left++/right--).之所以移动较短边的原因是,容积公
两个思路 1. 变成字符串然后进行双指针检查 2. 颠倒数字查看和原数字是否相等。简单题,没啥好说的ans1class Solution { public boolean isPalindrome(int x) { String s = Integer.toString(x);
这个题目,核心点在于判断乘和加的时候是否会溢出,总体而言是通过Integer.MAX_VALUE/10 和 a == Integer.MAX_VALUE/10时,下一位数字是否大于7 是否溢出Integer.MAX_VALUE = 2147483647Integer.MIN_VALUE = -214
用了两种解法第一种朴素思路,将数字转化成大字符串,然后进行字符串颠倒,最后转回数字。如果转换出错,代表溢出(之前别的题解里看到的奇怪套路...)第二种稍微高效写的写法,利用取余公式获取最后一位数字,然后添加到另一个数字的个位上Code-1class Solution { public int
水一下废话,这道题第一次遇到的时候不知道为什么想到的思路是找出数学规律。。。然后就花了很多时间,而且效果不好(太久没动脑,有点动不起来了hhh)。后面看了题解以后才发现其实有十分简单的办法。解题思路:给每个字符一个行号假定给定行数为num,当行号从1开始,一直递增到num,然后行号从num开始递减至