206.反转链表
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
以此类推,直到反转结束返回头结点
class Solution {
public ListNode reverseList(ListNode head) {
//当头结点为空或者头结点的下一节点为空时,返回头结点
if(head == null || head.next == null){
return head;
}
//创建一个返回节点
ListNode cur = reverseList(head.next);
head.next.next = head;
//将head.next设置为空,防止往回遍历
head.next = null;
return cur;
}
}
258.各位相加
给定一个非负整数 num
,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
输入: num = 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 + 8 --> 11 11 --> 1 + 1 --> 2 由于2是一位数,所以返回 2。
class Solution {
public int addDigits(int num) {
if(num < 10)
return num;
//声明一个整型变量用来存储每次的加法结果
int sum = 0;
while(num != 0){
sum = sum + num % 10;
num /= 10;
}
return addDigits(sum);
}
}
数学上解法:
class Solution {
public int addDigits(int num) {
return (num-1)%9+1;
}
}