2181
给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。
对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。
返回修改后链表的头节点 head 。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeNodes(ListNode head) {
ListNode pre=new ListNode(-1);
ListNode res=pre;
int sum=0;
head=head.next;
while(head!=null){
if(head.val!=0){
sum=sum+head.val;
}else{
pre.next=new ListNode(sum);
pre=pre.next;
sum=0;
}
head=head.next;
}
return res.next;
}
}
1221
思路
贪心,一加一减为零时,便是一个答案。(遇到’R’就上一台阶,遇到’L’就下一台阶,每当到地平线上的时候,即截到一段平衡字符串。)
代码
class Solution {
public int balancedStringSplit(String s) {
int count=0;
int res=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='L'){
count++;
}
else if(s.charAt(i)=='R'){
count--;
}
if(count==0){
res++;
}
}
return res;
}
}